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....@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@lists.osgeo.org > http://lists.osgeo.org/mailman/listinfo/gdal-dev > -- ---------------------------------------+-------------------------------------- I set the clouds in motion - turn up | Frank Warmerdam, warmer...@pobox.com light and sound - activate the windows | http://pobox.com/~warmerdam and watch the world go round - Rush | Geospatial Software Developer
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev