]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
don't leak on realloc fail
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 22 Jul 2008 18:48:56 +0000 (18:48 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 22 Jul 2008 18:48:56 +0000 (18:48 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9135 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_buffer.c

index d91f1fb0beddfe465b518f2ced94b452d56ec20d..da5d2db45fe46a2901880ab1c99b4e83a1d1ac6c 100644 (file)
@@ -229,6 +229,7 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_write(switch_buffer_t *buffer, const
        if (switch_test_flag(buffer, SWITCH_BUFFER_FLAG_DYNAMIC)) {
                if (freespace < datalen && (!buffer->max_len || (buffer->used + datalen <= buffer->max_len))) {
                        switch_size_t new_size, new_block_size;
+                       void *data;
 
                        new_size = buffer->datalen + datalen;
                        new_block_size = buffer->datalen + buffer->blocksize;
@@ -237,9 +238,10 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_write(switch_buffer_t *buffer, const
                                new_size = new_block_size;
                        }
                        buffer->head = buffer->data;
-                       if (!(buffer->data = realloc(buffer->data, new_size))) {
+                       if (!(data = realloc(buffer->data, new_size))) {
                                return 0;
                        }
+                       buffer->data = data;
                        buffer->head = buffer->data;
                        buffer->datalen = new_size;
                }