Index: mitab_datfile.cpp
===================================================================
--- mitab_datfile.cpp	(revision 3362)
+++ mitab_datfile.cpp	(working copy)
@@ -819,9 +819,6 @@
  **********************************************************************/
 const char *TABDATFile::ReadCharField(int nWidth)
 {
-    // We know that character strings are limited to 254 chars in MapInfo
-    static char szBuf[256];
-
     // If current record has been deleted, then return an acceptable 
     // default value.
     if (m_bCurRecordDeletedFlag)
@@ -841,21 +838,21 @@
         return "";
     }
 
-    if (m_poRecordBlock->ReadBytes(nWidth, (GByte*)szBuf) != 0)
+    if (m_poRecordBlock->ReadBytes(nWidth, (GByte*)m_szBuffer) != 0)
         return "";
 
-    szBuf[nWidth] = '\0';
+    m_szBuffer[nWidth] = '\0';
 
     // NATIVE tables are padded with '\0' chars, but DBF tables are padded
     // with spaces... get rid of the trailing spaces.
     if (m_eTableType == TABTableDBF)
     {
-        int nLen = strlen(szBuf)-1;
-        while(nLen>=0 && szBuf[nLen] == ' ')
-            szBuf[nLen--] = '\0';
+        int nLen = strlen(m_szBuffer)-1;
+        while(nLen>=0 && m_szBuffer[nLen] == ' ')
+            m_szBuffer[nLen--] = '\0';
     }
 
-    return szBuf;
+    return m_szBuffer;
 }
 
 /**********************************************************************
@@ -1011,7 +1008,6 @@
 const char *TABDATFile::ReadDateField(int nWidth)
 {
     int nDay, nMonth, nYear;
-    static char szBuf[20];
 
     // If current record has been deleted, then return an acceptable 
     // default value.
@@ -1038,9 +1034,9 @@
     if (CPLGetLastErrorNo() != 0 || (nYear==0 && nMonth==0 && nDay==0))
         return "";
 
-    sprintf(szBuf, "%4.4d%2.2d%2.2d", nYear, nMonth, nDay);
+    sprintf(m_szBuffer, "%4.4d%2.2d%2.2d", nYear, nMonth, nDay);
 
-    return szBuf;
+    return m_szBuffer;
 }
 
 /**********************************************************************
Index: mitab_priv.h
===================================================================
--- mitab_priv.h	(revision 3362)
+++ mitab_priv.h	(working copy)
@@ -1475,6 +1475,10 @@
     int         InitWriteHeader();
     int         WriteHeader();
 
+	// We know that character strings are limited to 254 chars in MapInfo
+	// Using a buffer pr. class instance to avoid threading issues with the library
+	char		m_szBuffer[256];
+
    public:
     TABDATFile();
     ~TABDATFile();

