Threading issue with OGR MI_TAB driver
I have discovered and fixed a problem with the MI_TAB part of OGR. The problem occurs when OGR is used in a threaded environment (such as the MapGuide Server).
In mitab_datfile.cpp the functions ReadCharField and ReadDateField both use a static allocated buffer to return the results. This causes memory violations when one thread is reading the buffer and another is writing it.
The fix is simple, just add a member variable that can act as buffer, and remove the statically allocated buffers. This gives a slight overhead in memory consumption, but enables threading.
The attached DIFF file can be used to patch the gdal/ogr version found in the MapGudie Server svn trunk (don't now the exact version used there).