<div dir="ltr">Dmitriy,<div><br></div><div>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.š</div>
<div><br></div><div><div>š š operator const char* (void) const { return c_str(); }</div><div><br></div><div>Perhaps there is some subtle reason I don't see that the compiler is creating a temporary std::string in between?š</div>
<div><br></div><div>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.š</div><div><br></div><div>Best regards,</div>
<div>Frank</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Dec 4, 2013 at 12:11 PM, Dmitriy Baryshnikov <span dir="ltr"><<a href="mailto:bishop.dev@gmail.com" target="_blank">bishop.dev@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div>Hi,<br>
      <br>
      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.<br>
      I found the root of problems here
      (ogr\ogrsf_frmts\s57\s57reader.cpp:932):<br>
      <blockquote>const char *pszAcronym =
        poRegistrar->GetAttrAcronym(nAttrId);<br>
        iField =
        poFeature->GetDefnRef()->GetFieldIndex(pszAcronym);<br>
        <br>
      </blockquote>
      The pszAcronym always empty.<br>
      <br>
      The problem comes from this function
      (ogr\ogrsf_frmts\s57\s57.h:140):<br>
      <blockquote>const char *GetAttrAcronym( int i )<br>
        ššš { return GetAttrInfo(i) == NULL ? NULL :
        aoAttrInfos[i]->osAcronym; }<br>
      </blockquote>
      It seems to me that during execution this function I have <code>situation
        when</code><code>c_str()</code><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:left;font-style:normal;font-weight:normal;float:none;line-height:18px;text-transform:none;font-size:14px;white-space:normal;font-family:Arial,'Liberation Sans','DejaVu Sans',sans-serif;word-spacing:0px;display:inline!important"><span>š</span>result
        becomes invalid (the<span>š</span></span><code>std::string</code><span><span>š</span>is destroyed or a
        non-const member function of the string is called).<span> </span></span><br>
      <br>
      If I change function <br>
      <blockquote>const char *GetAttrAcronym( int i )<br>
        ššš { return GetAttrInfo(i) == NULL ? NULL :
        aoAttrInfos[i]->osAcronym.c_str(); }<br>
      </blockquote>
      the problem gone.<br>
      <br>
      So I need some confirmation/verification my ideas.<br>
      If I'm right, I can make changes to s57 driver. <br>
      <pre cols="72">Best regards,
    Dmitry
</pre>
    </div>
  
<br><br>
<hr style="border:none;color:rgb(144,144,144);background-color:rgb(176,176,176);min-height:1px;width:99%">
<table style="border-collapse:collapse;border:none">
        <tbody><tr>
                <td style="border:none;padding:0px 15px 0px 8px">
                        <a href="http://www.avast.com/" target="_blank">
                                <img border="0">
                        </a>
                </td>
                <td>
                        <p style="color:rgb(61,77,90);font-family:Calibri,Verdana,Arial,Helvetica;font-size:12pt">
                                üÔÏ ÓÏÏÂÝÅÎÉÅ Ó×ÏÂÏÄÎÏ ÏÔ ×ÉÒÕÓÏ× É ×ÒÅÄÏÎÏÓÎÏÇÏ ðï ÂÌÁÇÏÄÁÒÑ <a href="http://www.avast.com/" target="_blank">avast! Antivirus</a> ÚÁÝÉÔÁ ÁËÔÉ×ÎÁ.
                        </p>
                </td>
        </tr>
</tbody></table>
<br>
</div>

<br>_______________________________________________<br>
gdal-dev mailing list<br>
<a href="mailto:gdal-dev@lists.osgeo.org">gdal-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/gdal-dev" target="_blank">http://lists.osgeo.org/mailman/listinfo/gdal-dev</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>---------------------------------------+--------------------------------------<br>
I set the clouds in motion - turn upšš | Frank Warmerdam, <a href="mailto:warmerdam@pobox.com" target="_blank">warmerdam@pobox.com</a><br>light and sound - activate the windows | <a href="http://pobox.com/~warmerdam" target="_blank">http://pobox.com/~warmerdam</a><br>
and watch the world go round - Rushš š | Geospatial Software Developer<br>
</div></div></div>