Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22298

c99 goto past initialization

$
0
0

While debugging a crash, I came across this issue in some code:

int func(){    char *p1 = malloc(...);    if (p1 == NULL)        goto err_exit;    char *p2 = malloc(...);    if (p2 == NULL)        goto err_exit;    ...err_exit:    free(p2);    free(p1);    return -1;}

The problem occurs when the first malloc fails. Because we jump across the initialization of p2, it contains random data and the call to free(p2) can crash.

I would expect/hope that this would be treated the same way as in C++ where the compiler does not allow a goto to jump across an initialization.

My question: is jumping across an initialization allowed by the standard or is this a bug in gcc's implementation of c99?


Viewing all articles
Browse latest Browse all 22298

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>