tags 342545 patch
thanks
Right, here's an off-the-cuff patch, which gets me past the point of the
SIGBUS on paer.
The same bug exists in the handling of Inf and NaN, but I didn't bother
patching for those since those constants should always be defined on Debian
systems and the related code paths never triggered.
Cheers,
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
[EMAIL PROTECTED] http://www.debian.org/
diff -u qt-x11-free-3.3.6/debian/changelog qt-x11-free-3.3.6/debian/changelog
--- qt-x11-free-3.3.6/debian/changelog
+++ qt-x11-free-3.3.6/debian/changelog
@@ -1,3 +1,11 @@
+qt-x11-free (3:3.3.6-3.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Fix the bogus assumption in src/tools/qlocale.cpp that a char[] can be
+cast to a double *. Closes: #342545.
+
+ -- Steve Langasek <[EMAIL PROTECTED]> Thu, 24 Aug 2006 00:17:09 -0600
+
qt-x11-free (3:3.3.6-3) unstable; urgency=low
+++ Changes by Christopher Martin
only in patch2:
unchanged:
--- qt-x11-free-3.3.6.orig/src/tools/qlocale.cpp
+++ qt-x11-free-3.3.6/src/tools/qlocale.cpp
@@ -122,13 +122,24 @@
#endif
// We can't rely on -NAN, since all operations on a NAN should return a NAN.
+static double be_neg_nan;
+static double le_neg_nan;
static const unsigned char be_neg_nan_bytes[] = { 0xff, 0xf8, 0, 0, 0, 0, 0, 0
};
static const unsigned char le_neg_nan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0xff
};
+static bool neg_nan_init = false;
+
static inline double negNan()
{
+if (!neg_nan_init)
+{
+memcpy(&be_neg_nan,be_neg_nan_bytes,sizeof(be_neg_nan_bytes));
+memcpy(&le_neg_nan,le_neg_nan_bytes,sizeof(le_neg_nan_bytes));
+neg_nan_init = true;
+}
return (ByteOrder == BigEndian ?
-*((const double *) be_neg_nan_bytes) :
-*((const double *) le_neg_nan_bytes));
+be_neg_nan :
+le_neg_nan);
+
}
// Sizes as defined by the ISO C99 standard - fallback
signature.asc
Description: Digital signature