summaryrefslogtreecommitdiff
blob: 1f70900f7bf49c6f5c67d703e3b781ed73a7756b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Bug 210551.
Fix compilation on mips

Original commit message by Christopher Martin, debian bug 342545.

   * Add a patch, courtesy of Steve Langasek, that fixes
     qt-x11-free's longstanding intermittent FTBFS on hppa, caused
     by "the bogus assumption in src/tools/qlocale.cpp that a
     char[] can be cast to a double *." (Closes: #342545)

--- 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