api: Don't use free directly with cr_asprintf. Fixes #87

This commit is contained in:
Snaipe 2016-09-03 08:33:34 -07:00
parent 9b88f244b6
commit 32fea80b7d
3 changed files with 9 additions and 3 deletions

View file

@ -37,6 +37,7 @@ CR_BEGIN_C_API
CR_FORMAT(printf, 2, 3)
CR_API int cr_asprintf(char **strp, const char *fmt, ...);
CR_API int cr_vasprintf(char **strp, const char *fmt, va_list ap);
CR_API void cr_asprintf_free(char *buf);
CR_END_C_API

View file

@ -97,10 +97,10 @@ CR_END_C_API
if (cr_fmt_msg__ && cr_fmt_msg__[1]) { \
MsgVar = cr_fmt_msg__ + 1; \
Shifted = 1; \
CR_STDN free(cr_def_msg__); \
cr_asprintf_free(cr_def_msg__); \
} else { \
MsgVar = cr_def_msg__; \
CR_STDN free(cr_fmt_msg__); \
cr_asprintf_free(cr_fmt_msg__); \
} \
} while (0))
@ -122,7 +122,7 @@ CR_END_C_API
cr_stat__.message = cr_msg__; \
criterion_send_assert(&cr_stat__); \
\
CR_STDN free(cr_msg__ - cr_shifted__); \
cr_asprintf_free(cr_msg__ - cr_shifted__); \
\
if (!cr_passed__) \
Fail(); \

View file

@ -61,3 +61,8 @@ cleanup:
va_end(vl);
return res;
}
void cr_asprintf_free(char *buf)
{
free(buf);
}