From 847b7a6236a517d52f4dbc673ef5adce6723eb36 Mon Sep 17 00:00:00 2001 From: tilghman Date: Tue, 2 Dec 2008 00:25:16 +0000 Subject: Ensure that Asterisk builds with --enable-dev-mode, even on the latest gcc and glibc. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@160207 f38db490-d61c-443f-a65b-d21fe96a405b --- apps/app_voicemail.c | 4 +++- include/asterisk/stringfields.h | 6 ++++-- main/frame.c | 5 ++++- main/pbx.c | 9 +++++++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index fdb848cec..8fdbd3696 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -2287,7 +2287,9 @@ static int retrieve_file(char *dir, int msgnum) } } } - truncate(full_fn, fdlen); + if (truncate(full_fn, fdlen) < 0) { + ast_log(LOG_WARNING, "Unable to truncate '%s': %s\n", full_fn, strerror(errno)); + } } } else { SQLLEN ind; diff --git a/include/asterisk/stringfields.h b/include/asterisk/stringfields.h index 97e65532d..ac9481156 100644 --- a/include/asterisk/stringfields.h +++ b/include/asterisk/stringfields.h @@ -242,8 +242,10 @@ void __ast_string_field_index_build_va(struct ast_string_field_mgr *mgr, if ((__zz__[0] != 0) && (__dlen__ <= (strlen(__zz__) + 1))) { \ memcpy(__zz__, data, __dlen__); \ } else { \ - if (((x)->__begin_field[index] = __ast_string_field_alloc_space(&(x)->__field_mgr, __dlen__, &(x)->__begin_field[0], ast_string_field_count(x)))) \ - memcpy((char*) (x)->__begin_field[index], data, __dlen__); \ + if (((x)->__begin_field[index] = __ast_string_field_alloc_space(&(x)->__field_mgr, __dlen__, &(x)->__begin_field[0], ast_string_field_count(x)))) { \ + char *__yy__ = (char *) (x)->__begin_field[index]; \ + memcpy(__yy__, data, __dlen__); \ + } \ } \ } \ } while (0) diff --git a/main/frame.c b/main/frame.c index 6768d0a98..b73782096 100644 --- a/main/frame.c +++ b/main/frame.c @@ -490,9 +490,12 @@ struct ast_frame *ast_frdup(const struct ast_frame *f) memcpy(out->data, f->data, out->datalen); } if (srclen > 0) { + /* This may seem a little strange, but it's to avoid a gcc (4.2.4) compiler warning */ + char *src; out->src = buf + sizeof(*out) + AST_FRIENDLY_OFFSET + f->datalen; + src = (char *) out->src; /* Must have space since we allocated for it */ - strcpy((char *)out->src, f->src); + strcpy(src, f->src); } ast_copy_flags(out, f, AST_FRFLAG_HAS_TIMING_INFO); out->ts = f->ts; diff --git a/main/pbx.c b/main/pbx.c index 99ecee92b..293705c02 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -4494,14 +4494,19 @@ int ast_context_add_ignorepat2(struct ast_context *con, const char *value, const { struct ast_ignorepat *ignorepat, *ignorepatc, *ignorepatl = NULL; int length; + char *pattern; length = sizeof(struct ast_ignorepat); length += strlen(value) + 1; if (!(ignorepat = ast_calloc(1, length))) return -1; /* The cast to char * is because we need to write the initial value. - * The field is not supposed to be modified otherwise + * The field is not supposed to be modified otherwise. Also, gcc 4.2 + * sees the cast as dereferencing a type-punned pointer and warns about + * it. This is the workaround (we're telling gcc, yes, that's really + * what we wanted to do). */ - strcpy((char *)ignorepat->pattern, value); + pattern = (char *) ignorepat->pattern; + strcpy(pattern, value); ignorepat->next = NULL; ignorepat->registrar = registrar; ast_mutex_lock(&con->lock); -- cgit v1.2.3