Merged revisions 160207 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 2 Dec 2008 00:37:21 +0000 (00:37 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 2 Dec 2008 00:37:21 +0000 (00:37 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r160207 | tilghman | 2008-12-01 18:25:16 -0600 (Mon, 01 Dec 2008) | 3 lines

  Ensure that Asterisk builds with --enable-dev-mode, even on the latest gcc
  and glibc.
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@160208 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c
channels/chan_features.c
include/asterisk/stringfields.h
main/cli.c
main/frame.c
main/pbx.c

index 33abd7c..b24a904 100644 (file)
@@ -2843,7 +2843,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 {
                                res = SQLGetData(stmt, x + 1, SQL_CHAR, rowdata, sizeof(rowdata), NULL);
index 5da503f..49400ad 100644 (file)
@@ -449,7 +449,11 @@ static struct ast_channel *features_new(struct feature_pvt *p, int state, int id
        for (x=1;x<4;x++) {
                if (b2)
                        ast_free(b2);
-               asprintf(&b2, "%s/%s-%d", p->tech, p->dest, x);
+               if (asprintf(&b2, "%s/%s-%d", p->tech, p->dest, x) < 0) {
+                       ast_log(LOG_WARNING, "Unable to create channel name: %s\n", strerror(errno));
+                       b2 = NULL;
+                       continue;
+               }
                for (y=0;y<3;y++) {
                        if (y == idx)
                                continue;
index 4b18474..20597a5 100644 (file)
@@ -255,12 +255,16 @@ int __ast_string_field_init(struct ast_string_field_mgr *mgr,
        const char *__d__ = (data);                             \
        size_t __dlen__ = (__d__) ? strlen(__d__) + 1 : 1;      \
        const char **__p__ = (const char **) (ptr);             \
+       char *__q__; \
        if (__dlen__ == 1)                                      \
                *__p__ = __ast_string_field_empty;              \
-       else if (!__ast_string_field_ptr_grow(&(x)->__field_mgr, __dlen__, ptr)) \
-               memcpy((char *) *__p__, __d__, __dlen__);       \
-       else if ((*__p__ = __ast_string_field_alloc_space(&(x)->__field_mgr, &(x)->__field_mgr_pool, __dlen__))) \
-               memcpy((char *) *__p__, __d__, __dlen__);       \
+       else if (!__ast_string_field_ptr_grow(&(x)->__field_mgr, __dlen__, ptr)) { \
+               __q__ = (char *) *__p__; \
+               memcpy(__q__, __d__, __dlen__); \
+       } else if ((*__p__ = __ast_string_field_alloc_space(&(x)->__field_mgr, &(x)->__field_mgr_pool, __dlen__))) { \
+               __q__ = (char *) *__p__; \
+               memcpy(__q__, __d__, __dlen__); \
+       } \
        } while (0)
 
 /*!
index 6152867..c4ffd39 100644 (file)
@@ -1769,7 +1769,8 @@ static int __ast_cli_unregister(struct ast_cli_entry *e, struct ast_cli_entry *e
                e->_full_cmd = NULL;
                if (e->handler) {
                        /* this is a new-style entry. Reset fields and free memory. */
-                       memset((char **)(e->cmda), '\0', sizeof(e->cmda));
+                       char *cmda = (char *) e->cmda;
+                       memset(cmda, '\0', sizeof(e->cmda));
                        ast_free(e->command);
                        e->command = NULL;
                        e->usage = NULL;
index 35bb47f..8c0982b 100644 (file)
@@ -478,9 +478,12 @@ struct ast_frame *ast_frdup(const struct ast_frame *f)
                memcpy(out->data.ptr, f->data.ptr, 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;
index 974ca61..1e6ce17 100644 (file)
@@ -7077,14 +7077,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_wrlock_context(con);