[Gdal-dev] Please try this ECW 3.1-rc2 patch for linux/posix
Bill Binko
bill at binko.net
Wed Jun 15 01:18:58 EDT 2005
Hi everyone.
I found what I think is a problem in the ECW libraries (version 3.1-rc2).
Basically, they are not initializing a boolean attribute of a class to
zero (FALSE). This means that if you test with the debug version of the
library, it works (GCC initializes it) and if you work with the optimized
version, it doesn't.
So, I put together a patch that seems to fix the problem. I'm attaching
it to this message.
Please let me know if this helps, or if there are more occurrences of
this. I have posted this to the ERMapper forum, so hopefully, it will
make it into the 3.1 release.
Bill
-------------- next part --------------
diff -U5 -r ecwrc2-orig/Source/C/NCSUtil/thread.c ecwrc2/Source/C/NCSUtil/thread.c
--- ecwrc2-orig/Source/C/NCSUtil/thread.c 2005-01-19 12:42:20.000000000 -0500
+++ ecwrc2/Source/C/NCSUtil/thread.c 2005-06-15 00:52:23.947514800 -0400
@@ -198,12 +198,14 @@
HANDLE hThread;
#else /* _WIN32_WCE */
unsigned long hThread;
#endif /* _WIN32_WCE */
NCSThreadInfo *pThreadInfo = (NCSThreadInfo*)NCSMalloc(sizeof(NCSThreadInfo), TRUE);
-
NCSMutexBegin(&mMutex);
+
+ pThreadInfo->bThreadRunning = FALSE;
+
pThreadInfo->tid = tidNextTID++;
NCSMutexEnd(&mMutex);
*pThread = pThreadInfo->tid;
pStartData->pThread = &(pThreadInfo->tid);//pThread;
@@ -269,10 +271,11 @@
MacThreadID hThread;
NCSThreadStartData *pStartData = NULL;
if( pThreadInfo ) {
NCSMutexBegin(&mMutex);
+ pThreadInfo->bThreadRunning = FALSE;
pThreadInfo->tid = tidNextTID++;
NCSMutexEnd(&mMutex);
*pThread = pThreadInfo->tid;
@@ -354,10 +357,11 @@
NCSThreadStartData *pStartData = NULL;
NCSThreadInfo *pThreadInfo = (NCSThreadInfo*)NCSMalloc(sizeof(NCSThreadInfo), TRUE);
NCSMutexBegin(&mMutex);
+ pThreadInfo->bThreadRunning = FALSE;
pThreadInfo->tid = tidNextTID++;
NCSMutexEnd(&mMutex);
*pThread = pThreadInfo->tid;
@@ -629,11 +633,11 @@
*/
NCSThreadInfo *pThreadInfo = (NCSThreadInfo*)NCSMalloc(sizeof(NCSThreadInfo), TRUE);
if(pThreadInfo) {
NCSMutexBegin(&mMutex);
-
+ pThreadInfo->bThreadRunning = FALSE;
pThreadInfo->tid = tidNextTID++;
#ifdef WIN32
#ifdef _WIN32_WCE
pThreadInfo->hThread = GetCurrentThread(); // FIXME - no DuplicateHandle()?
More information about the Gdal-dev
mailing list