[gdal-dev] VS2010-VS2013 s57

Frank Warmerdam warmerdam at pobox.com
Wed Dec 4 12:19:53 PST 2013


Dmitriy,

It is not clear to me why this should be necessary.  osAcronym is a long
lived std::string (well CPLString derived from std::string) living in the
registrars attribute list.  I assume the following method is used to
convert the CPLString to "const char *" which should amount to the same
thing you did.

    operator const char* (void) const { return c_str(); }

Perhaps there is some subtle reason I don't see that the compiler is
creating a temporary std::string in between?

In any event, if you file a ticket I can apply this change upstream.  There
are other accessors on the same class that look like they could have
similar issues.

Best regards,
Frank


On Wed, Dec 4, 2013 at 12:11 PM, Dmitriy Baryshnikov
<bishop.dev at gmail.com>wrote:

>  Hi,
>
> I have such error: the GDAL compiled with VS2010-VS2013 in s57 driver
> loose all additional fields values. But the same code compiled with gcc or
> previous VS works fine.
> I found the root of problems here (ogr\ogrsf_frmts\s57\s57reader.cpp:932):
>
> const char *pszAcronym = poRegistrar->GetAttrAcronym(nAttrId);
> iField = poFeature->GetDefnRef()->GetFieldIndex(pszAcronym);
>
>  The pszAcronym always empty.
>
> The problem comes from this function (ogr\ogrsf_frmts\s57\s57.h:140):
>
> const char *GetAttrAcronym( int i )
>     { return GetAttrInfo(i) == NULL ? NULL : aoAttrInfos[i]->osAcronym; }
>
> It seems to me that during execution this function I have situation when
> c_str() result becomes invalid (the std::string is destroyed or a
> non-const member function of the string is called).
>
> If I change function
>
> const char *GetAttrAcronym( int i )
>     { return GetAttrInfo(i) == NULL ? NULL :
> aoAttrInfos[i]->osAcronym.c_str(); }
>
> the problem gone.
>
> So I need some confirmation/verification my ideas.
> If I'm right, I can make changes to s57 driver.
>
> Best regards,
>     Dmitry
>
>
>
> ------------------------------
>    <http://www.avast.com/>
>
> Это сообщение свободно от вирусов и вредоносного ПО благодаря avast!
> Antivirus <http://www.avast.com/> защита активна.
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>



-- 
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam,
warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Software Developer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20131204/f7de2033/attachment.html>


More information about the gdal-dev mailing list