Ticket #1883 (closed defect: fixed)
Threading issue with OGR MI_TAB driver
| Reported by: | ksgeograf | Owned by: | warmerdam |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.4.3 |
| Component: | OGR_SF | Version: | 1.4.2 |
| Severity: | normal | Keywords: | mitab threading |
| Cc: | dmorissette |
Description
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).

