170 lines
4.7 KiB
Diff
170 lines
4.7 KiB
Diff
|
Adapted from https://sources.debian.net/data/main/d/doc%2B%2B/3.4.10-3.4/debian/patches/segfault_fix.patch
|
||
|
|
||
|
--- doc++-3.4.10/src/McDArray.h 2000-07-30 12:40:48.000000000 +0200
|
||
|
+++ doc++-3.4.10/src/McDArray.h 2005-05-10 15:02:06.000000000 +0200
|
||
|
@@ -80,9 +80,14 @@
|
||
|
McDArray(const McDArray& old) : memFactor(old.memFactor),
|
||
|
thesize(old.thesize), themax(old.themax)
|
||
|
{
|
||
|
- data = (T*)malloc(themax * sizeof(T));
|
||
|
- if(thesize)
|
||
|
- memcpy(data, old.data, thesize * sizeof(T));
|
||
|
+ if (themax)
|
||
|
+ {
|
||
|
+ data = (T*)malloc(themax * sizeof(T));
|
||
|
+ if(thesize)
|
||
|
+ memcpy(data, old.data, thesize * sizeof(T));
|
||
|
+ }
|
||
|
+ else
|
||
|
+ data = 0;
|
||
|
assert(isConsistent());
|
||
|
}
|
||
|
|
||
|
--- doc++-3.4.10/src/McDirectory.cc 2000-03-14 22:17:36.000000000 +0100
|
||
|
+++ doc++-3.4.10/src/McDirectory.cc 2005-05-10 15:02:18.000000000 +0200
|
||
|
@@ -23,12 +23,13 @@
|
||
|
*/
|
||
|
|
||
|
#include "McDirectory.h"
|
||
|
-#include "McSorter.h"
|
||
|
#include "McString.h"
|
||
|
#include "doc.h"
|
||
|
|
||
|
#include <stdio.h>
|
||
|
|
||
|
+#include <algorithm>
|
||
|
+
|
||
|
#ifdef WIN32
|
||
|
#include <windows.h>
|
||
|
#ifdef __BORLANDC__
|
||
|
@@ -62,7 +63,7 @@
|
||
|
FindClose(searchHandle);
|
||
|
StringCompare comp;
|
||
|
if(list.size())
|
||
|
- sort((char **)list, list.size(), comp, 0);
|
||
|
+ std::sort((char **)list, (char **)list + list.size(), comp);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -107,7 +108,7 @@
|
||
|
closedir(dir);
|
||
|
StringCompare comp;
|
||
|
if(list.size())
|
||
|
- sort((char **)list, list.size(), comp, 0);
|
||
|
+ std::sort((char **)list, (char **)list + list.size(), comp);
|
||
|
return list.size();
|
||
|
}
|
||
|
|
||
|
--- doc++-3.4.10/src/McDirectory.h 2000-06-28 21:54:58.000000000 +0200
|
||
|
+++ doc++-3.4.10/src/McDirectory.h 2005-05-10 15:02:18.000000000 +0200
|
||
|
@@ -59,9 +59,9 @@
|
||
|
class StringCompare
|
||
|
{
|
||
|
public:
|
||
|
- int operator()(const char *t1, const char *t2)
|
||
|
+ bool operator()(const char *t1, const char *t2)
|
||
|
{
|
||
|
- return strcmp(t1, t2);
|
||
|
+ return strcmp(t1, t2) < 0;
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
--- doc++-3.4.10/src/html.cc 2001-02-17 07:34:49.000000000 +0100
|
||
|
+++ doc++-3.4.10/src/html.cc 2005-05-10 15:02:18.000000000 +0200
|
||
|
@@ -38,9 +38,10 @@
|
||
|
#include <sys/stat.h>
|
||
|
#include <sys/types.h>
|
||
|
|
||
|
+#include <algorithm>
|
||
|
+
|
||
|
#include "McDirectory.h"
|
||
|
#include "McHashTable.h"
|
||
|
-#include "McSorter.h"
|
||
|
#include "classgraph.h"
|
||
|
#include "doc.h"
|
||
|
#include "gifs.h"
|
||
|
@@ -314,9 +315,11 @@
|
||
|
virtual void writeMember(Entry *e, bool links, bool withSub = true);
|
||
|
class EntryCompare {
|
||
|
public:
|
||
|
- int operator()(const MemberWriterListEntry& l1, const MemberWriterListEntry& l2)
|
||
|
+ bool operator()(const MemberWriterListEntry& l1, const MemberWriterListEntry& l2)
|
||
|
{
|
||
|
- return strcmp(l1.entry->fullName.c_str(), l2.entry->fullName.c_str());
|
||
|
+ const char *s1 = l1.entry->fullName.c_str();
|
||
|
+ const char *s2 = l2.entry->fullName.c_str();
|
||
|
+ return strcmp(s1, s2) < 0;
|
||
|
}
|
||
|
};
|
||
|
public:
|
||
|
@@ -324,7 +327,7 @@
|
||
|
{
|
||
|
EntryCompare comp;
|
||
|
if(list.size())
|
||
|
- ::sort((MemberWriterListEntry *)list, list.size(), comp, 0);
|
||
|
+ std::sort((MemberWriterListEntry *)list, (MemberWriterListEntry *)list + list.size(), comp);
|
||
|
}
|
||
|
virtual void startList(FILE *f, char *heading, bool withLinks);
|
||
|
virtual void addMember(Entry *e, bool links, bool withSub = true)
|
||
|
@@ -376,7 +379,7 @@
|
||
|
int lp;
|
||
|
|
||
|
if(list.size() > 1)
|
||
|
- ::sort((TOCListEntry *)list, list.size(), comp, 0);
|
||
|
+ std::sort((TOCListEntry *)list, (TOCListEntry *)list + list.size(), comp);
|
||
|
|
||
|
// Sort subsections
|
||
|
for(lp = 0; lp < list.size(); lp++)
|
||
|
@@ -385,9 +388,9 @@
|
||
|
}
|
||
|
class EntryCompare {
|
||
|
public:
|
||
|
- int operator()(TOCListEntry& l1, TOCListEntry& l2)
|
||
|
+ bool operator()(const TOCListEntry& l1, const TOCListEntry& l2)
|
||
|
{
|
||
|
- return strcmp(l1.name, l2.name);
|
||
|
+ return strcmp(l1.name, l2.name) < 0;
|
||
|
}
|
||
|
};
|
||
|
void addEntry(Entry *entry, TOClist *tl);
|
||
|
@@ -487,7 +490,7 @@
|
||
|
|
||
|
for(i = 0; i < list.size(); i++)
|
||
|
if(list[i].tl)
|
||
|
- free(list[i].tl);
|
||
|
+ delete list[i].tl;
|
||
|
}
|
||
|
|
||
|
class HIERlist;
|
||
|
@@ -509,7 +512,7 @@
|
||
|
int i;
|
||
|
|
||
|
if(list.size() > 1)
|
||
|
- ::sort((HIERListEntry *)list, list.size(), comp, 0);
|
||
|
+ std::sort((HIERListEntry *)list, (HIERListEntry *)list + list.size(), comp);
|
||
|
|
||
|
// Sort subentries
|
||
|
for(i = 0; i < list.size(); i++)
|
||
|
@@ -519,9 +522,9 @@
|
||
|
class EntryCompare
|
||
|
{
|
||
|
public:
|
||
|
- int operator()(HIERListEntry& l1, HIERListEntry& l2)
|
||
|
+ bool operator()(const HIERListEntry& l1, const HIERListEntry& l2)
|
||
|
{
|
||
|
- return strcmp(l1.name, l2.name);
|
||
|
+ return strcmp(l1.name, l2.name) < 0;
|
||
|
}
|
||
|
};
|
||
|
void addEntry(Entry *entry, HIERlist *hl);
|
||
|
--- doc++-3.4.10/src/readfiles.ll 2001-11-25 18:04:48.000000000 +0100
|
||
|
+++ doc++-3.4.10/src/readfiles.ll 2005-05-10 15:02:18.000000000 +0200
|
||
|
@@ -28,7 +28,6 @@
|
||
|
#include <sys/types.h>
|
||
|
|
||
|
#include "McDirectory.h"
|
||
|
-#include "McSorter.h"
|
||
|
#include "McString.h"
|
||
|
#include "doc.h"
|
||
|
#include "nametable.h"
|