[gdal-dev] Patch for s57reader.cpp

M S mrxonx at hotmail.com
Fri Nov 4 15:12:51 EDT 2011


Unfortunately, I really don't have the time.

I am glad to provide the fix, but whether you choose to apply it or keep a broken implementation is up to you. 

> Date: Fri, 4 Nov 2011 16:54:09 -0200
> Subject: Re: [gdal-dev] Patch for s57reader.cpp
> From: etourigny.dev at gmail.com
> To: mrxonx at hotmail.com
> CC: gdal-dev at lists.osgeo.org
> 
> Dear  Mike,
> 
> Please add this to a relevant ticket, or create one and add it there.
> 
> http://trac.osgeo.org/gdal/report
> 
> thanks, Etienne
> 
> On Fri, Nov 4, 2011 at 4:27 PM,  <mrxonx at hotmail.com> wrote:
> > Dear all,
> >
> > Included is a patch for s57reader.cpp that properly applies updates for
> > certain types of charts.
> >
> > The essence of this patch is that SG2D field may not be present in
> > original record, and must be added if update is trying to insert SG2D
> > fields.
> >
> > The patch was made against our modified version of OGR, so line numbers
> > likely do not match and certain function signatures may need to be
> > updated. If you'd like to apply it - make sure it goes in the
> > S57Reader::ApplyRecordUpdate.
> >
> > Best,
> > --
> > Mike
> >
> >
> >
> > Index: s57reader.cpp
> > ===================================================================
> > --- s57reader.cpp       (revision 0000)
> > +++ s57reader.cpp       (working copy)
> > @@ -2635,16 +2635,30 @@
> >         /* If we don't have SG2D, check for SG3D */
> >         if( poDstSG2D == NULL )
> >         {
> > -            poSrcSG2D = poUpdate->FindField("SG3D");
> >             poDstSG2D = poTarget->FindField("SG3D");
> > +            if (poDstSG2D != NULL) {
> > +               poSrcSG2D = poUpdate->FindField("SG3D");
> > +            }
> >         }
> >
> > -        if( (poSrcSG2D == NULL && nCCUI != 2) || poDstSG2D == NULL )
> > +        if( (poSrcSG2D == NULL && nCCUI != 2) || (poDstSG2D == NULL && nCCUI != 1) )
> >         {
> >             CPLAssert( FALSE );
> >             return FALSE;
> >         }
> >
> > +        if (poDstSG2D == NULL) {
> > +          poTarget->AddField(poTarget->GetModule()->FindFieldDefn("SG2D"));
> > +          poDstSG2D = poTarget->FindField("SG2D");
> > +          if (poDstSG2D == NULL) {
> > +            CPLAssert( FALSE );
> > +            return FALSE;
> > +          }
> > +
> > +          // Delete null default data that was created
> > +          poTarget->SetFieldRaw( poDstSG2D, 0, NULL, 0 );
> > +        }
> > +
> >         nCoordSize = poDstSG2D->GetFieldDefn()->GetFixedWidth();
> >
> >         if( nCCUI == 1 ) /* INSERT */
> >
> > _______________________________________________
> > gdal-dev mailing list
> > gdal-dev at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/gdal-dev
> >
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20111104/fc1e91ae/attachment.html


More information about the gdal-dev mailing list