[cairo] return type of cairo_status_to_string ()

Daniel Goldman dagoldman at yahoo.com
Tue Aug 17 22:33:47 PDT 2010


> > And what about the analogous function "char  *strerror (int errnum)"?

> 
> Old functions have not been modified precisely  because people are assigning 
>the results to a char* rather than a const  char*.
> 
> Since Cairo is "new" and there is no legacy code trying to call  this function, 
>this excuse is not needed.
> 
> > But the man page says  "This string must not be modified by the 
application".
> 
> That is  *precisely* the purpose of making the return value "const char*", it 
>tells the  compiler that the program should not attempt to modify the returned 
>string.
>

So you're saying strcpy () and strcat () could be modified to accept const char 
* parameters without breaking old code. But changing the return type of strerror 
() would break legacy code. It makes sense. Some of the strerror () man pages 
even support what you are saying by calling it a "bug" that the strerror () 
return type is not const char * - For example: 
http://www.daemon-systems.org/man/strerror.3.html

I still can't imagine why someone would try to modify the string, such as char 
*error_str = func (); error_str [0] = 'x'; so the precaution in this case seems 
unnecessary. I'm used to taking responsibility and not having the software 
needlessly babysit me. But I've already adapted and moved on and learned some. 
Uncle!!!

Daniel



More information about the cairo mailing list