Opened 14 years ago
Closed 6 years ago
#3127 closed defect (wontfix)
Use 'char const**' instead of 'char**' for input strings with pointer reset
Reported by: | dougrm | Owned by: | warmerdam |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | default | Version: | unspecified |
Severity: | normal | Keywords: | |
Cc: |
Description
gdal-1.6.2/ogr
Lots of input-only char*'s (with an input/output pointer to the char*) are declared char. The intent would be more clear and it would get rid of lots of casts to instead declare them char const. (The string chars cannot be changed, but the pointer to the first char in the string can.) The final cast used in the .cpp versions to reset the dereferenced inputs must also be removed. For instance, in ogr_geometry.h:
virtual OGRErr importFromWkt( char ppszInput ) = 0;
should be:
virtual OGRErr importFromWkt( char const ppszInput ) = 0;
and in ogr_srsnode.cpp
OGRErr OGR_SRSNode::importFromWkt( char ppszInput ) has near the end:
*ppszInput = (char *) pszInput;
but should (with the above const), just have:
*ppszInput = pszInput;
Users can then also get rid of (char) casts on inputs. For example:
char s = (char)&"some input string";
a.importFromWkt(s);
becomes
char const s = &"some input string";
a.importFromWkt(s);
or for the brave just:
a.importFromWkt(&"some input string");
instead of the current:
a.importFromWkt((char)&"some input string");
To find examples of the problem do:
cd ogr
grep -i '\(import\|create\).*char \*\*' *.h
Change History (3)
comment:1 by , 14 years ago
comment:2 by , 9 years ago
To be closed as wontfix because nobody wants to do that much work with fixing something that ain't really broken, or what?
I am not interested in const correctness changes to the existing C or C++ API. In my experience the churn is not worth the supposed benefit in correctness. It would be desirable to be vigilant in this regard with new interfaces.