Opened 7 years ago

Closed 7 years ago

#4073 closed defect (fixed)

[Shapelib - PATCH] DBFAddNativeFieldType should flush the active record before updating the file

Reported by: Even Rouault Owned by: warmerdam
Priority: normal Milestone:
Component: OGR_SF Version: unspecified
Severity: normal Keywords: shape CreateField()
Cc:

Description

The following snippet leads to junk being written in the first record because it is not flushed to disk before adding the second field. The attached patch fixes this by issuing a DBFFlushRecord() at the beginning of DBFAddNativeFieldType.

ds = ogr.GetDriverByName('ESRI Shapefile').CreateDataSource('createfield.dbf')
lyr = ds.CreateLayer('createfield')

lyr.CreateField(ogr.FieldDefn('foo', ogr.OFTString))

feat = ogr.Feature(lyr.GetLayerDefn())
feat.SetField(0, 'foo')
lyr.CreateFeature(feat)

lyr.CreateField(ogr.FieldDefn('bar', ogr.OFTString))

feat = ogr.Feature(lyr.GetLayerDefn())
feat.SetField(1, 'bar')
lyr.CreateFeature(feat)
ds = None

Attachments (1)

dbfopen_fix_DBFAddNativeFieldType.patch (643 bytes) - added by Even Rouault 7 years ago.

Download all attachments as: .zip

Change History (2)

Changed 7 years ago by Even Rouault

comment:1 Changed 7 years ago by warmerdam

Resolution: fixed
Status: newclosed

Patch applied upstream, and pulled back into trunk (r22328).

Note: See TracTickets for help on using tickets.