Update to 2.0.0 tree from current Fremantle build
[opencv] / debian / patches / 110_dereferencement.diff
diff --git a/debian/patches/110_dereferencement.diff b/debian/patches/110_dereferencement.diff
new file mode 100644 (file)
index 0000000..da97077
--- /dev/null
@@ -0,0 +1,164 @@
+Index: opencv-0.9.7/cv/include/cvcompat.h
+===================================================================
+--- opencv-0.9.7.orig/cv/include/cvcompat.h    2005-05-27 13:49:53.000000000 +0200
++++ opencv-0.9.7/cv/include/cvcompat.h 2006-06-12 13:38:01.000000000 +0200
+@@ -164,12 +164,15 @@
+ CV_INLINE void cvFillImage( CvArr* mat, double color )\r
+ {\r
+     CvPoint left_top = { 0, 0 }, right_bottom = { 0, 0 };\r
++    union { CvPoint p; CvSize s; } tmp;\r
\r
+-    cvGetRawData( mat, 0, 0, (CvSize*)&right_bottom );\r
+-    right_bottom.x--;\r
++    tmp.p = right_bottom;\r
++\r
++    cvGetRawData( mat, 0, 0, &tmp.s );\r
++    tmp.p.x--;\r
+     right_bottom.y--;\r
\r
+-    cvRectangle( mat, left_top, right_bottom,\r
++    cvRectangle( mat, left_top, tmp.p,\r
+                  cvColorToScalar( color, cvGetElemType(mat)),\r
+                  CV_FILLED, 8, 0 );\r
+ }\r
+@@ -429,8 +432,6 @@
+     vect1->y = pt[1].y - pt[0].y;\r
+     vect2->x = pt[3].x - pt[0].x;\r
+     vect2->y = pt[3].y - pt[0].y;\r
+-\r
+-    CV_UNREFERENCED( (left, bottom, right, top) );\r
+ }\r
\r
+ typedef int CvDisType;\r
+@@ -777,29 +778,29 @@
+                                 const float* A, const float* k,\r
+                                 int CV_UNREFERENCED(interpolate) )\r
+ {\r
+-    float* data;\r
++    union { float *f; uchar *u; } data;\r
+     CvSize sz;\r
+-    cvGetRawData( undistortion_map, (uchar**)&data, 0, &sz );\r
++    cvGetRawData( undistortion_map, &data.u, 0, &sz );\r
+     assert( sz.width >= 8 );\r
+     /* just save the intrinsic parameters to the map */\r
+-    data[0] = A[0]; data[1] = A[4];\r
+-    data[2] = A[2]; data[3] = A[5];\r
+-    data[4] = k[0]; data[5] = k[1];\r
+-    data[6] = k[2]; data[7] = k[3];\r
++    data.f[0] = A[0]; data.f[1] = A[4];\r
++    data.f[2] = A[2]; data.f[3] = A[5];\r
++    data.f[4] = k[0]; data.f[5] = k[1];\r
++    data.f[6] = k[2]; data.f[7] = k[3];\r
+ }\r
\r
+ CV_INLINE void  cvUnDistort( const CvArr* src, CvArr* dst,\r
+                              const CvArr* undistortion_map,\r
+                              int CV_UNREFERENCED(interpolate) )\r
+ {\r
+-    float* data;\r
++    union { float *f; uchar *u; } data;\r
+     float a[] = {0,0,0,0,0,0,0,0,1};\r
+     CvSize sz;\r
+-    cvGetRawData( undistortion_map, (uchar**)&data, 0, &sz );\r
++    cvGetRawData( undistortion_map, &data.u, 0, &sz );\r
+     assert( sz.width >= 8 );\r
+-    a[0] = data[0]; a[4] = data[1];\r
+-    a[2] = data[2]; a[5] = data[3];\r
+-    cvUnDistortOnce( src, dst, a, data + 4, 1 ); \r
++    a[0] = data.f[0]; a[4] = data.f[1];\r
++    a[2] = data.f[2]; a[5] = data.f[3];\r
++    cvUnDistortOnce( src, dst, a, data.f + 4, 1 ); \r
+ }\r
\r
\r
+@@ -836,13 +837,15 @@
+                                   int mask CV_DEFAULT(CV_GRAPH_ALL_ITEMS))\r
+ {\r
+     CvGraphScanner* temp_scanner;\r
++    void *tmp;\r
+     \r
+     if( !scanner )\r
+         cvError( CV_StsNullPtr, "cvStartScanGraph", "Null scanner pointer", "cvcompat.h", 0 );\r
\r
+     temp_scanner = cvCreateGraphScanner( graph, vtx, mask );\r
+     *scanner = *temp_scanner;\r
+-    cvFree( (void**)&temp_scanner );\r
++    tmp = (void *)temp_scanner;\r
++    cvFree( &tmp );\r
+ }\r
\r
\r
+Index: opencv-0.9.7/cxcore/include/cxcore.h
+===================================================================
+--- opencv-0.9.7.orig/cxcore/include/cxcore.h  2005-07-05 17:59:49.000000000 +0200
++++ opencv-0.9.7/cxcore/include/cxcore.h       2006-06-12 13:37:05.000000000 +0200
+@@ -153,7 +153,10 @@
+         CvMat* mat = (CvMat*)arr; /* the first few fields of CvMat and CvMatND are the same */\r
+         mat->data.ptr = NULL;\r
+         if( mat->refcount != NULL && --*mat->refcount == 0 )\r
+-            cvFree( (void**)&mat->refcount );\r
++        {\r
++            void *tmp = (void *)mat->refcount;\r
++            cvFree( &tmp );\r
++        }\r
+         mat->refcount = NULL;\r
+     }\r
+ }\r
+Index: opencv-0.9.7/cxcore/include/cxtypes.h
+===================================================================
+--- opencv-0.9.7.orig/cxcore/include/cxtypes.h 2006-06-12 13:37:05.000000000 +0200
++++ opencv-0.9.7/cxcore/include/cxtypes.h      2006-06-12 13:37:05.000000000 +0200
+@@ -219,9 +219,10 @@
+     int i = _mm_cvtsd_si32(t);\r
+     return i - _mm_movemask_pd(_mm_cmplt_sd(t,_mm_cvtsi32_sd(t,i)));\r
+ #else\r
++    union { int i; float f; } tmp;\r
+     int temp = cvRound(value);\r
+-    float diff = (float)(value - temp);\r
+-    return temp - (*(int*)&diff < 0);\r
++    tmp.f = (float)(value - temp);\r
++    return temp - (tmp.i < 0);\r
+ #endif\r
+ }\r
\r
+@@ -233,9 +234,10 @@
+     int i = _mm_cvtsd_si32(t);\r
+     return i + _mm_movemask_pd(_mm_cmpgt_sd(t,_mm_cvtsi32_sd(t,i)));\r
+ #else\r
++    union { int i; float f; } tmp;\r
+     int temp = cvRound(value);\r
+-    float diff = (float)(temp - value);\r
+-    return temp + (*(int*)&diff < 0);\r
++    tmp.f = (float)(temp - value);\r
++    return temp + (tmp.i < 0);\r
+ #endif\r
+ }\r
\r
+@@ -249,8 +251,11 @@
+ #elif defined __GNUC__\r
+     return isnan(value);\r
+ #else*/\r
+-    unsigned lo = (unsigned)*(uint64*)&value;\r
+-    unsigned hi = (unsigned)(*(uint64*)&value >> 32);\r
++    union { uint64 i; double d; } tmp;\r
++    unsigned lo, hi;\r
++    tmp.d = value;\r
++    lo = (unsigned)tmp.i;\r
++    hi = (unsigned)(tmp.i >> 32);\r
+     return (hi & 0x7fffffff) + (lo != 0) > 0x7ff00000;\r
+ #endif\r
+ }\r
+@@ -263,8 +268,11 @@
+ #elif defined __GNUC__\r
+     return isinf(value);\r
+ #else*/\r
+-    unsigned lo = (unsigned)*(uint64*)&value;\r
+-    unsigned hi = (unsigned)(*(uint64*)&value >> 32);\r
++    union { uint64 i; double d; } tmp;\r
++    unsigned lo, hi;\r
++    tmp.d = value;\r
++    lo = (unsigned)tmp.i;\r
++    hi = (unsigned)(tmp.i >> 32);\r
+     return (hi & 0x7fffffff) == 0x7ff00000 && lo == 0;\r
+ #endif\r
+ }\r