]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix mem err
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 10 Jan 2008 03:12:32 +0000 (03:12 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 10 Jan 2008 03:12:32 +0000 (03:12 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7163 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_core_file.c

index 2d053284494f7d011797ee465d4532b87cb77aac..85f3e79c28627cb011c2351bda22dc73c805c9d9 100644 (file)
@@ -130,7 +130,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh,
        switch_assert(fh->file_interface != NULL);
 
        if (fh->buffer && switch_buffer_inuse(fh->buffer)) {
-               *len = switch_buffer_read(fh->buffer, data, orig_len);
+               *len = switch_buffer_read(fh->buffer, data, orig_len * 2) / 2;
                return SWITCH_STATUS_SUCCESS;
        }
 
@@ -154,21 +154,21 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh,
                fh->resampler->from_len = switch_short_to_float(data, fh->resampler->from, (int) *len);
                fh->resampler->to_len = 
                        switch_resample_process(fh->resampler, fh->resampler->from, fh->resampler->from_len, fh->resampler->to, fh->resampler->to_size, 0);
-
+               
                if (fh->resampler->to_len > orig_len) {
                        if (!fh->buffer) {
                                switch_buffer_create_dynamic(&fh->buffer, fh->resampler->to_len * 2, fh->resampler->to_len * 4, fh->resampler->to_len * 8);
                                switch_assert(fh->buffer);
                        }
                        if (!fh->dbuf) {
-                               fh->dbuflen = fh->resampler->to_len * 2;
+                               fh->dbuflen = fh->resampler->to_len * 8;
                                fh->dbuf = switch_core_alloc(fh->memory_pool, fh->dbuflen);
                        }
                        switch_assert(fh->resampler->to_len <= fh->dbuflen);
                        
                        switch_float_to_short(fh->resampler->to, (int16_t *) fh->dbuf, fh->resampler->to_len);
                        switch_buffer_write(fh->buffer, fh->dbuf, fh->resampler->to_len * 2);
-                       *len = switch_buffer_read(fh->buffer, data, orig_len);
+                       *len = switch_buffer_read(fh->buffer, data, orig_len * 2) / 2;
                } else {
                        switch_float_to_short(fh->resampler->to, data, fh->resampler->to_len);
                        *len = fh->resampler->to_len;