summaryrefslogtreecommitdiff
path: root/x11/kdelibs3
diff options
context:
space:
mode:
authorWill Andrews <will@FreeBSD.org>2001-08-29 23:16:13 +0000
committerWill Andrews <will@FreeBSD.org>2001-08-29 23:16:13 +0000
commit174743bd5ddef6ae9f435be75fb1c0fa4b251433 (patch)
treeb40d9a65fbfa5fdc64c42a68874f4f97967bb534 /x11/kdelibs3
parentThe 4.13 distfile was clobbered by the 4.14 one. I have the old (diff)
Add patch for kdoctools/xml2man.cpp, similar to xslt.cpp patch.
Bump PORTREVISION just in case this is needed. From Mikhail Teterin: > Well, for the same reason the xslt.cpp sometimes works -- in fact, it > worked for everyone, until someone tried it on current. > > In essence, the code reads the whole file into a buffer. It then tries > to turn that buffer into one of qt's string-objects (QCString). The > class' constructor they chose assumes, it is passed a valid (aka > \0-terminated) string and goes through the buffer looking for the first > 0-byte. The file itself does not contain any, so it happily wonders > behind the real end of the buffer until it either finds a stray 0-byte, > or seg-faults, trying to read a wrong page. > > Apparently, more often than not, some stray 0-byte is there -- no > surprise. But it will usually create a string that's longer than the > file size -- unless the 0-byte happens to be right there at the end of > the buffer. Apparently, the lamer, who wrote it, noticed something > strange, so he/she explicitly truncates the created QCString object to > the known size of the file after instantiation: > > contents.truncate(xmlFile.size()) > > My patch modifies the code to use the correct QCString constructor -- > the one, that accepts the maximum size of the string. This does the > right thing -- once it reaches the end of the buffer, it stops, > allocates the private storage (I hate C++ for all this buffer copying), > appends the 0-byte and creates the object of the expected size. No > truncation is needed.... Thanks to Mikhail for his debugging on this problem; this patch further removes the hazard of meinproc coredumps. Submitted by: mi
Notes
Notes: svn path=/head/; revision=47116
Diffstat (limited to 'x11/kdelibs3')
-rw-r--r--x11/kdelibs3/Makefile2
-rw-r--r--x11/kdelibs3/files/patch-kdoctools::xml2man.cpp13
2 files changed, 14 insertions, 1 deletions
diff --git a/x11/kdelibs3/Makefile b/x11/kdelibs3/Makefile
index 540b32e9e15d..5765e85fda27 100644
--- a/x11/kdelibs3/Makefile
+++ b/x11/kdelibs3/Makefile
@@ -7,7 +7,7 @@
PORTNAME= kdelibs
PORTVERSION= 2.2
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${PORTVERSION}/src
diff --git a/x11/kdelibs3/files/patch-kdoctools::xml2man.cpp b/x11/kdelibs3/files/patch-kdoctools::xml2man.cpp
new file mode 100644
index 000000000000..fb020b58532c
--- /dev/null
+++ b/x11/kdelibs3/files/patch-kdoctools::xml2man.cpp
@@ -0,0 +1,13 @@
+--- kdoctools/xml2man.cpp Sat Jul 28 23:55:05 2001
++++ kdoctools/xml2man.cpp.new Wed Aug 29 18:10:54 2001
+@@ -63,9 +63,7 @@
+ QString pat = args->arg( 0 );
+ QFile xmlFile( pat );
+ xmlFile.open(IO_ReadOnly);
+- QCString contents;
+- contents.assign(xmlFile.readAll());
+- contents.truncate(xmlFile.size());
++ QCString contents(xmlFile.radAll(), xmlFile.size() + 1);
+ xmlFile.close();
+
+ contents.replace( QRegExp( "<!--[^-]*-->" ), "" );