summaryrefslogtreecommitdiff
path: root/main/astobj2.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2011-10-25 22:06:43 +0000
committerRichard Mudgett <rmudgett@digium.com>2011-10-25 22:06:43 +0000
commitebf860e157b640d4f8b7f84dc96721f589f22d31 (patch)
tree68ec5cb05f652dbe97b786588b10daddf90cb9ad /main/astobj2.c
parent6cf08ad5506b40542f4821429f2630c9b308ecee (diff)
Check fopen return value for ao2 reference debug output.
Reported by: wdoekes Patched by: wdoekes Review: https://reviewboard.asterisk.org/r/1539/ ........ Merged revisions 342487 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 342488 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342489 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/astobj2.c')
-rw-r--r--main/astobj2.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/main/astobj2.c b/main/astobj2.c
index 7a8bc621b..df5e2ef0a 100644
--- a/main/astobj2.c
+++ b/main/astobj2.c
@@ -210,14 +210,19 @@ int __ao2_ref_debug(void *user_data, const int delta, char *tag, char *file, int
return -1;
if (delta != 0) {
- FILE *refo = fopen(REF_FILE,"a");
- fprintf(refo, "%p %s%d %s:%d:%s (%s) [@%d]\n", user_data, (delta<0? "":"+"), delta, file, line, funcname, tag, obj ? obj->priv_data.ref_counter : -1);
- fclose(refo);
+ FILE *refo = fopen(REF_FILE, "a");
+ if (refo) {
+ fprintf(refo, "%p %s%d %s:%d:%s (%s) [@%d]\n", user_data, (delta < 0 ? "" : "+"),
+ delta, file, line, funcname, tag, obj ? obj->priv_data.ref_counter : -1);
+ fclose(refo);
+ }
}
if (obj->priv_data.ref_counter + delta == 0 && obj->priv_data.destructor_fn != NULL) { /* this isn't protected with lock; just for o/p */
- FILE *refo = fopen(REF_FILE,"a");
- fprintf(refo, "%p **call destructor** %s:%d:%s (%s)\n", user_data, file, line, funcname, tag);
+ FILE *refo = fopen(REF_FILE, "a");
+ if (refo) {
+ fprintf(refo, "%p **call destructor** %s:%d:%s (%s)\n", user_data, file, line, funcname, tag);
fclose(refo);
+ }
}
return internal_ao2_ref(user_data, delta);
}
@@ -319,14 +324,13 @@ void *__ao2_alloc_debug(size_t data_size, ao2_destructor_fn destructor_fn, char
{
/* allocation */
void *obj;
- FILE *refo = ref_debug ? fopen(REF_FILE,"a") : NULL;
+ FILE *refo;
if ((obj = internal_ao2_alloc(data_size, destructor_fn, file, line, funcname)) == NULL) {
- fclose(refo);
return NULL;
}
- if (refo) {
+ if (ref_debug && (refo = fopen(REF_FILE, "a"))) {
fprintf(refo, "%p =1 %s:%d:%s (%s)\n", obj, file, line, funcname, tag);
fclose(refo);
}