[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