Re: How to check if char pointer is a constant!?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jul 08, 2016 at 09:33:03AM -0300, Daniel. wrote:
> Hi all thanks for the reply.
> 
> I think I wasn't clear. Here is a working example: http://codepad.org/0SUG6IcQ
> 
> The function get_pair_from_string() should I) remove trailing spcaes, II) return
> the address for key and value using it's last parameters. The problem is that
> since I modify the first parameter calling with strings constants generates a
> segmentation fault. This is because strings constans aren't modifiable. I wan't
> to have better hints when this happen than just "SEGSEGV". I think that the
> -Wwrite-strings is what I was looking for :D, thanks Phil!!!

Glad I could help.

> John, I'll be in production, but not at this time. Luckly, that
> function is file scoped
> so I don't have to bother that much. Still I like to avoid the crypt
> "SEGSEGV" error
> message as much as possible. Usually I assert for NULL pointers and give a nice
> error message but this case is trickier. I'll take Phil advice and use
> -Wwrite-strings

Calling 'SIGSEGV' an error message is a slight underestimation. Actually
your program simply crashes. The gcc warning to activate will just help
to keep your code sane, not improve run-time behaviour.

If you want to modify strings no matter whether they are constant or
not, strdup() them into a local variable and work with that. Especially
since it's just for parsing as your example shows. Just keep in mind
that you will have to free the duplicated string at some point,
otherwise you will have a memory leak (which at some point will lead to
an equally cryptic message as your segfault did).

Cheers, Phil
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux