]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Various little memory leak possibilities in spandsp sorts, and the spandsp
authorSteve Underwood <steveu@coppice.org>
Sat, 14 Jun 2014 11:49:05 +0000 (19:49 +0800)
committerSteve Underwood <steveu@coppice.org>
Sat, 14 Jun 2014 11:49:05 +0000 (19:49 +0800)
test suite is now mostly OK with valgrind.

66 files changed:
libs/spandsp/spandsp-sim/g1050.c
libs/spandsp/spandsp-sim/line_model.c
libs/spandsp/spandsp-sim/make_line_models.c
libs/spandsp/spandsp-sim/rfc2198_sim.c
libs/spandsp/spandsp-sim/spandsp/g1050.h
libs/spandsp/spandsp-sim/spandsp/line_model.h
libs/spandsp/spandsp-sim/spandsp/rfc2198_sim.h
libs/spandsp/spandsp-sim/spandsp/test_utils.h
libs/spandsp/spandsp-sim/test_utils.c
libs/spandsp/src/bell_r2_mf.c
libs/spandsp/src/dtmf.c
libs/spandsp/src/fax.c
libs/spandsp/src/image_translate.c
libs/spandsp/src/t30.c
libs/spandsp/src/t31.c
libs/spandsp/src/t4_tx.c
libs/spandsp/src/t85_decode.c
libs/spandsp/src/t85_encode.c
libs/spandsp/src/time_scale.c
libs/spandsp/src/v18.c
libs/spandsp/src/v8.c
libs/spandsp/tests/ademco_contactid_tests.c
libs/spandsp/tests/at_interpreter_tests.c
libs/spandsp/tests/awgn_tests.c
libs/spandsp/tests/bell_mf_rx_tests.c
libs/spandsp/tests/bell_mf_tx_tests.c
libs/spandsp/tests/bert_tests.c
libs/spandsp/tests/dc_restore_tests.c
libs/spandsp/tests/dtmf_rx_tests.c
libs/spandsp/tests/dtmf_tx_tests.c
libs/spandsp/tests/fax_decode.c
libs/spandsp/tests/fax_tests.c
libs/spandsp/tests/fsk_tests.c
libs/spandsp/tests/g1050_tests.c
libs/spandsp/tests/g168_tests.c
libs/spandsp/tests/g711_tests.c
libs/spandsp/tests/g722_tests.c
libs/spandsp/tests/g726_tests.c
libs/spandsp/tests/gsm0610_tests.c
libs/spandsp/tests/ima_adpcm_tests.c
libs/spandsp/tests/image_translate_tests.c
libs/spandsp/tests/line_model_tests.c
libs/spandsp/tests/logging_tests.c
libs/spandsp/tests/lpc10_tests.c
libs/spandsp/tests/oki_adpcm_tests.c
libs/spandsp/tests/power_meter_tests.c
libs/spandsp/tests/r2_mf_rx_tests.c
libs/spandsp/tests/rfc2198_sim_tests.c
libs/spandsp/tests/sig_tone_tests.c
libs/spandsp/tests/swept_tone_tests.c
libs/spandsp/tests/t31_tests.c
libs/spandsp/tests/t38_non_ecm_buffer_tests.c
libs/spandsp/tests/t42_tests.c
libs/spandsp/tests/t43_tests.c
libs/spandsp/tests/t4_t6_tests.c
libs/spandsp/tests/t4_tests.c
libs/spandsp/tests/t81_t82_arith_coding_tests.c
libs/spandsp/tests/t85_tests.c
libs/spandsp/tests/time_scale_tests.c
libs/spandsp/tests/tone_detect_tests.c
libs/spandsp/tests/tone_generate_tests.c
libs/spandsp/tests/tsb85_tests.c
libs/spandsp/tests/v17_tests.c
libs/spandsp/tests/v22bis_tests.c
libs/spandsp/tests/v27ter_tests.c
libs/spandsp/tests/v29_tests.c

index c1e8b9d4153dfbf451887f13a5ebe8fee368a02f..ed7d8e900b2707c17dff0744094d721e0370acbe 100644 (file)
 #define GEN_CONST
 #include <math.h>
 #endif
+#if defined(HAVE_STDBOOL_H)
+#include <stdbool.h>
+#else
+#include "spandsp/stdbool.h"
+#endif
 #include "floating_fudge.h"
 
 #include "spandsp.h"
@@ -48,9 +53,6 @@
 
 #define PACKET_LOSS_TIME    -1
 
-#define FALSE 0
-#define TRUE (!FALSE)
-
 g1050_constants_t g1050_constants[1] =
 {
     {
@@ -746,7 +748,7 @@ static void g1050_segment_init(g1050_segment_state_t *s,
     s->max_jitter = parms->max_jitter;
 
     /* The following is common state information to all links. */
-    s->high_loss = FALSE;
+    s->high_loss = false;
     s->congestion_delay = 0.0;
     s->last_arrival_time = 0.0;
 
@@ -797,7 +799,7 @@ static void g1050_core_init(g1050_core_state_t *s, g1050_core_model_t *parms, in
 static void g1050_segment_model(g1050_segment_state_t *s, double delays[], int len)
 {
     int i;
-    int lose;
+    bool lose;
     int was_high_loss;
     double impulse;
     double slice_delay;
@@ -805,7 +807,7 @@ static void g1050_segment_model(g1050_segment_state_t *s, double delays[], int l
     /* Compute delay and loss value for each time slice. */
     for (i = 0;  i < len;  i++)
     {
-        lose = FALSE;
+        lose = false;
         /* Initialize delay to the serial delay plus some jitter. */
         slice_delay = s->serial_delay + s->max_jitter*q1050_rand();
         /* If no QoS, do congestion delay and packet loss analysis. */
@@ -826,14 +828,14 @@ static void g1050_segment_model(g1050_segment_state_t *s, double delays[], int l
             }
 
             if (was_high_loss  &&  q1050_rand() < s->prob_packet_loss)
-                lose = TRUE;
+                lose = true;
             /* Single pole LPF for the congestion delay impulses. */
             s->congestion_delay = s->congestion_delay*s->impulse_coeff + impulse*(1.0 - s->impulse_coeff);
             slice_delay += s->congestion_delay;
         }
         /* If duplex mismatch on LAN, packet loss based on loss probability. */
         if (s->multiple_access  &&  (q1050_rand() < s->prob_packet_collision_loss))
-            lose = TRUE;
+            lose = true;
         /* Put computed delay into time slice array. */
         if (lose)
         {
@@ -851,12 +853,12 @@ static void g1050_segment_model(g1050_segment_state_t *s, double delays[], int l
 static void g1050_core_model(g1050_core_state_t *s, double delays[], int len)
 {
     int32_t i;
-    int lose;
+    bool lose;
     double jitter_delay;
 
     for (i = 0;  i < len;  i++)
     {
-        lose = FALSE;
+        lose = false;
         jitter_delay = s->base_delay + s->max_jitter*q1050_rand();
         /* Route flapping */
         if (--s->route_flap_counter <= 0)
@@ -866,18 +868,18 @@ static void g1050_core_model(g1050_core_state_t *s, double delays[], int len)
             s->route_flap_counter = s->route_flap_interval;
         }
         if (q1050_rand() < s->prob_packet_loss)
-            lose = TRUE;
+            lose = true;
         /* Link failures */
         if (--s->link_failure_counter <= 0)
         {
             /* We are in a link failure */
-            lose = TRUE;
+            lose = true;
             if (--s->link_recovery_counter <= 0)
             {
                 /* Leave failure state. */
                 s->link_failure_counter = s->link_failure_interval_ticks;
                 s->link_recovery_counter = s->link_failure_duration_ticks;
-                lose = FALSE;
+                lose = false;
             }
         }
         if (lose)
@@ -1056,23 +1058,23 @@ static void g1050_simulate_chunk(g1050_state_t *s)
 
     s->base_time += 1.0;
 
-    memcpy(&s->segment[0].delays[0], &s->segment[0].delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->segment[0].delays[0]));
+    memmove(&s->segment[0].delays[0], &s->segment[0].delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->segment[0].delays[0]));
     g1050_segment_model(&s->segment[0], &s->segment[0].delays[2*G1050_TICKS_PER_SEC], G1050_TICKS_PER_SEC);
 
-    memcpy(&s->segment[1].delays[0], &s->segment[1].delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->segment[1].delays[0]));
+    memmove(&s->segment[1].delays[0], &s->segment[1].delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->segment[1].delays[0]));
     g1050_segment_model(&s->segment[1], &s->segment[1].delays[2*G1050_TICKS_PER_SEC], G1050_TICKS_PER_SEC);
 
-    memcpy(&s->core.delays[0], &s->core.delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->core.delays[0]));
+    memmove(&s->core.delays[0], &s->core.delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->core.delays[0]));
     g1050_core_model(&s->core, &s->core.delays[2*G1050_TICKS_PER_SEC], G1050_TICKS_PER_SEC);
 
-    memcpy(&s->segment[2].delays[0], &s->segment[2].delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->segment[2].delays[0]));
+    memmove(&s->segment[2].delays[0], &s->segment[2].delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->segment[2].delays[0]));
     g1050_segment_model(&s->segment[2], &s->segment[2].delays[2*G1050_TICKS_PER_SEC], G1050_TICKS_PER_SEC);
 
-    memcpy(&s->segment[3].delays[0], &s->segment[3].delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->segment[3].delays[0]));
+    memmove(&s->segment[3].delays[0], &s->segment[3].delays[G1050_TICKS_PER_SEC], 2*G1050_TICKS_PER_SEC*sizeof(s->segment[3].delays[0]));
     g1050_segment_model(&s->segment[3], &s->segment[3].delays[2*G1050_TICKS_PER_SEC], G1050_TICKS_PER_SEC);
 
-    memcpy(&s->arrival_times_1[0], &s->arrival_times_1[s->packet_rate], 2*s->packet_rate*sizeof(s->arrival_times_1[0]));
-    memcpy(&s->arrival_times_2[0], &s->arrival_times_2[s->packet_rate], 2*s->packet_rate*sizeof(s->arrival_times_2[0]));
+    memmove(&s->arrival_times_1[0], &s->arrival_times_1[s->packet_rate], 2*s->packet_rate*sizeof(s->arrival_times_1[0]));
+    memmove(&s->arrival_times_2[0], &s->arrival_times_2[s->packet_rate], 2*s->packet_rate*sizeof(s->arrival_times_2[0]));
     for (i = 0;  i < s->packet_rate;  i++)
     {
         s->arrival_times_1[2*s->packet_rate + i] = s->base_time + 2.0 + (double) i/(double) s->packet_rate;
@@ -1126,7 +1128,7 @@ SPAN_DECLARE(g1050_state_t *) g1050_init(int model,
                        &mo->sidea_lan,
                        sp->sidea_lan_bit_rate,
                        sp->sidea_lan_multiple_access,
-                       FALSE,
+                       false,
                        packet_size,
                        packet_rate);
     g1050_segment_init(&s->segment[1],
@@ -1134,7 +1136,7 @@ SPAN_DECLARE(g1050_state_t *) g1050_init(int model,
                        &constants->segment[1],
                        &mo->sidea_access_link,
                        sp->sidea_access_link_bit_rate_ab,
-                       FALSE,
+                       false,
                        sp->sidea_access_link_qos_enabled,
                        packet_size,
                        packet_rate);
@@ -1144,7 +1146,7 @@ SPAN_DECLARE(g1050_state_t *) g1050_init(int model,
                        &constants->segment[2],
                        &mo->sideb_access_link,
                        sp->sideb_access_link_bit_rate_ba,
-                       FALSE,
+                       false,
                        sp->sideb_access_link_qos_enabled,
                        packet_size,
                        packet_rate);
@@ -1154,7 +1156,7 @@ SPAN_DECLARE(g1050_state_t *) g1050_init(int model,
                        &mo->sideb_lan,
                        sp->sideb_lan_bit_rate,
                        sp->sideb_lan_multiple_access,
-                       FALSE,
+                       false,
                        packet_size,
                        packet_rate);
 
@@ -1186,6 +1188,13 @@ SPAN_DECLARE(g1050_state_t *) g1050_init(int model,
 }
 /*- End of function --------------------------------------------------------*/
 
+SPAN_DECLARE(int) g1050_free(g1050_state_t *s)
+{
+    free(s);
+    return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
 SPAN_DECLARE(void) g1050_dump_parms(int model, int speed_pattern)
 {
     g1050_channel_speeds_t *sp;
index 4326ae7d29f01e1b9d7e2d974a941f8e3833504b..9da1f1549509937cd3f52f0768bede29e105cc45 100644 (file)
 #define GEN_CONST
 #include <math.h>
 #endif
+#if defined(HAVE_STDBOOL_H)
+#include <stdbool.h>
+#else
+#include "spandsp/stdbool.h"
+#endif
 #include "floating_fudge.h"
 
 #define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -345,7 +350,7 @@ SPAN_DECLARE(void) one_way_line_model_set_mains_pickup(one_way_line_model_state_
 
     if (f)
     {
-        tone_gen_descriptor_init(&mains_tone_desc, f, (int) (level - 10.0f), f*3, (int) level, 1, 0, 0, 0, TRUE);
+        tone_gen_descriptor_init(&mains_tone_desc, f, (int) (level - 10.0f), f*3, (int) level, 1, 0, 0, 0, true);
         tone_gen_init(&s->mains_tone, &mains_tone_desc);
     }
     s->mains_interference = f;
@@ -454,9 +459,9 @@ SPAN_DECLARE(void) both_ways_line_model_set_mains_pickup(both_ways_line_model_st
 
     if (f)
     {
-        tone_gen_descriptor_init(&mains_tone_desc, f, (int) (level1 - 10.0f), f*3, (int) level1, 1, 0, 0, 0, TRUE);
+        tone_gen_descriptor_init(&mains_tone_desc, f, (int) (level1 - 10.0f), f*3, (int) level1, 1, 0, 0, 0, true);
         tone_gen_init(&s->line1.mains_tone, &mains_tone_desc);
-        tone_gen_descriptor_init(&mains_tone_desc, f, (int) (level2 - 10.0f), f*3, (int) level2, 1, 0, 0, 0, TRUE);
+        tone_gen_descriptor_init(&mains_tone_desc, f, (int) (level2 - 10.0f), f*3, (int) level2, 1, 0, 0, 0, true);
         tone_gen_init(&s->line2.mains_tone, &mains_tone_desc);
     }
     s->line1.mains_interference = f;
@@ -494,8 +499,9 @@ SPAN_DECLARE(one_way_line_model_state_t *) one_way_line_model_init(int model, fl
 }
 /*- End of function --------------------------------------------------------*/
 
-SPAN_DECLARE(int) one_way_line_model_release(one_way_line_model_state_t *s)
+SPAN_DECLARE(int) one_way_line_model_free(one_way_line_model_state_t *s)
 {
+    codec_munge_free(s->munge);
     free(s);
     return 0;
 }
@@ -559,8 +565,10 @@ SPAN_DECLARE(both_ways_line_model_state_t *) both_ways_line_model_init(int model
 }
 /*- End of function --------------------------------------------------------*/
 
-SPAN_DECLARE(int) both_ways_line_model_release(both_ways_line_model_state_t *s)
+SPAN_DECLARE(int) both_ways_line_model_free(both_ways_line_model_state_t *s)
 {
+    codec_munge_free(s->line1.munge);
+    codec_munge_free(s->line2.munge);
     free(s);
     return 0;
 }
index ed7cfe934e7422712e2114da49f4f2094def14dd..8c5e1f2b5b162ad884eb4884b9fe74a4760cc831 100644 (file)
 #include <inttypes.h>
 #include <string.h>
 #include <stdio.h>
-#include "floating_fudge.h"
 #if defined(HAVE_FFTW3_H)
 #include <fftw3.h>
 #else
 #include <fftw.h>
 #endif
-#if defined(HAVE_TGMATH_H)
-#include <tgmath.h>
-#endif
-#if defined(HAVE_MATH_H)
 #include <math.h>
+#if defined(HAVE_STDBOOL_H)
+#include <stdbool.h>
+#else
+#include "spandsp/stdbool.h"
 #endif
 
 #include "spandsp.h"
index 6ecba8921437c40411596829b29d1cf89767763a..9e286b5dbd2a49b9521b9478f14a17eef55ca455 100644 (file)
 #define GEN_CONST
 #include <math.h>
 #endif
+#if defined(HAVE_STDBOOL_H)
+#include <stdbool.h>
+#else
+#include "spandsp/stdbool.h"
+#endif
 #include "floating_fudge.h"
 
 #include "spandsp.h"
@@ -49,9 +54,6 @@
 
 #define PACKET_LOSS_TIME    -1
 
-#define FALSE 0
-#define TRUE (!FALSE)
-
 SPAN_DECLARE(rfc2198_sim_state_t *) rfc2198_sim_init(int model,
                                                      int speed_pattern,
                                                      int packet_size,
@@ -70,6 +72,14 @@ SPAN_DECLARE(rfc2198_sim_state_t *) rfc2198_sim_init(int model,
 }
 /*- End of function --------------------------------------------------------*/
 
+SPAN_DECLARE(int) rfc2198_sim_free(rfc2198_sim_state_t *s)
+{
+    g1050_free(s->g1050);
+    free(s);
+    return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
 SPAN_DECLARE(int) rfc2198_sim_put(rfc2198_sim_state_t *s,
                                   const uint8_t buf[],
                                   int len,
index 687630e83457105dbd256f4d5d19db9f1b228b3a..d9d62bc23c6067a1eb41777dc0b966f9ef54ced9 100644 (file)
@@ -272,6 +272,8 @@ SPAN_DECLARE(g1050_state_t *) g1050_init(int model,
                                          int packet_size,
                                          int packet_rate);
 
+SPAN_DECLARE(int) g1050_free(g1050_state_t *s);
+
 SPAN_DECLARE(void) g1050_dump_parms(int model, int speed_pattern);
 
 SPAN_DECLARE(int) g1050_put(g1050_state_t *s,
index 8465d4b4577a4f3d897988cc82022435dc58c8ff..72fe4811c9d17fa37deace43128a5760089aed64 100644 (file)
@@ -154,7 +154,7 @@ SPAN_DECLARE(both_ways_line_model_state_t *) both_ways_line_model_init(int model
                                                                        int codec,
                                                                        int rbs_pattern);
 
-SPAN_DECLARE(int) both_ways_line_model_release(both_ways_line_model_state_t *s);
+SPAN_DECLARE(int) both_ways_line_model_free(both_ways_line_model_state_t *s);
 
 SPAN_DECLARE(void) one_way_line_model(one_way_line_model_state_t *s,
                                       int16_t output[],
@@ -167,7 +167,7 @@ SPAN_DECLARE(void) one_way_line_model_set_mains_pickup(one_way_line_model_state_
 
 SPAN_DECLARE(one_way_line_model_state_t *) one_way_line_model_init(int model, float noise, int codec, int rbs_pattern);
 
-SPAN_DECLARE(int) one_way_line_model_release(one_way_line_model_state_t *s);
+SPAN_DECLARE(int) one_way_line_model_free(one_way_line_model_state_t *s);
 
 #ifdef __cplusplus
 }
index a0c3d64b624cc723e714393133925107d18b9dc2..5aaa495ba195ccce675313a3fbb59b6957531ca5 100644 (file)
@@ -73,6 +73,8 @@ SPAN_DECLARE(rfc2198_sim_state_t *) rfc2198_sim_init(int model,
                                                      int packet_rate,
                                                      int redundancy_depth);
 
+SPAN_DECLARE(int) rfc2198_sim_free(rfc2198_sim_state_t *s);
+
 SPAN_DECLARE(int) rfc2198_sim_put(rfc2198_sim_state_t *s,
                                   const uint8_t buf[],
                                   int len,
index 6144f64d0e69f00af5e9cbae504ef4c429c4fae9..407b800048b721ff3e1dd6f972514ac84650549f 100644 (file)
@@ -51,7 +51,7 @@ extern "C" {
 
 SPAN_DECLARE(complexify_state_t *) complexify_init(void);
 
-SPAN_DECLARE(void) complexify_release(complexify_state_t *s);
+SPAN_DECLARE(int) complexify_free(complexify_state_t *s);
 
 SPAN_DECLARE(complexf_t) complexify(complexify_state_t *s, int16_t amp);
 
@@ -61,7 +61,7 @@ SPAN_DECLARE(void) ifft(complex_t data[], int len);
 
 SPAN_DECLARE(codec_munge_state_t *) codec_munge_init(int codec, int info);
 
-SPAN_DECLARE(void) codec_munge_release(codec_munge_state_t *s);
+SPAN_DECLARE(void) codec_munge_free(codec_munge_state_t *s);
 
 SPAN_DECLARE(void) codec_munge(codec_munge_state_t *s, int16_t amp[], int len);
 
index d37c8977bb208c7a33e32f40dea45da8c5a3f08d..69394702c0040f4ddd173464b60b5e9eca201045 100644 (file)
 #if defined(HAVE_MATH_H)
 #include <math.h>
 #endif
+#if defined(HAVE_STDBOOL_H)
+#include <stdbool.h>
+#else
+#include "spandsp/stdbool.h"
+#endif
 #include "floating_fudge.h"
 #include <time.h>
 #include <fcntl.h>
@@ -66,12 +71,14 @@ struct complexify_state_s
 };
 
 static complex_t circle[MAX_FFT_LEN/2];
-static int circle_init = FALSE;
+static int circle_init = false;
 static complex_t icircle[MAX_FFT_LEN/2];
-static int icircle_init = FALSE;
+static int icircle_init = false;
 
 #define SF_MAX_HANDLE   32
-static int sf_close_at_exit_registered = FALSE;
+
+static int sf_close_at_exit_registered = false;
+
 static SNDFILE *sf_close_at_exit_list[SF_MAX_HANDLE] =
 {
     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -95,9 +102,10 @@ SPAN_DECLARE(complexify_state_t *) complexify_init(void)
 }
 /*- End of function --------------------------------------------------------*/
 
-SPAN_DECLARE(void) complexify_release(complexify_state_t *s)
+SPAN_DECLARE(int) complexify_free(complexify_state_t *s)
 {
     free(s);
+    return 0;
 }
 /*- End of function --------------------------------------------------------*/
 
@@ -243,7 +251,7 @@ SPAN_DECLARE(void) fft(complex_t data[], int len)
             x = -(2.0*3.1415926535*i)/(double) MAX_FFT_LEN;
             circle[i] = expj(x);
         }
-        circle_init = TRUE;
+        circle_init = true;
     }
     fftx(data, temp, len);
 }
@@ -263,7 +271,7 @@ SPAN_DECLARE(void) ifft(complex_t data[], int len)
             x = (2.0*3.1415926535*i)/(double) MAX_FFT_LEN;
             icircle[i] = expj(x);
         }
-        icircle_init = TRUE;
+        icircle_init = true;
     }
     ifftx(data, temp, len);
 }
@@ -308,7 +316,7 @@ SPAN_DECLARE(codec_munge_state_t *) codec_munge_init(int codec, int info)
 }
 /*- End of function --------------------------------------------------------*/
 
-SPAN_DECLARE(void) codec_munge_release(codec_munge_state_t *s)
+SPAN_DECLARE(void) codec_munge_free(codec_munge_state_t *s)
 {
     free(s);
 }
@@ -389,7 +397,7 @@ static int sf_record_handle(SNDFILE *handle)
     if (!sf_close_at_exit_registered)
     {
         atexit(sf_close_at_exit);
-        sf_close_at_exit_registered = TRUE;
+        sf_close_at_exit_registered = true;
     }
     return 0;
 }
@@ -455,7 +463,6 @@ SPAN_DECLARE(int) sf_close_telephony(SNDFILE *handle)
         {
             if (sf_close_at_exit_list[i] == handle)
             {
-                sf_close(sf_close_at_exit_list[i]);
                 sf_close_at_exit_list[i] = NULL;
                 break;
             }
index b8e507026e2d61f1d767f97ffb8ca13eb5e27ba3..41c11674b41ed963fdc623414f0bf9afe82e0c16 100644 (file)
@@ -348,12 +348,14 @@ SPAN_DECLARE(bell_mf_tx_state_t *) bell_mf_tx_init(bell_mf_tx_state_t *s)
 
 SPAN_DECLARE(int) bell_mf_tx_release(bell_mf_tx_state_t *s)
 {
+    queue_release(&s->queue.queue);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
 
 SPAN_DECLARE(int) bell_mf_tx_free(bell_mf_tx_state_t *s)
 {
+    queue_release(&s->queue.queue);
     span_free(s);
     return 0;
 }
index 1f4e012dd314d436290957508d4eb3ebee65fd42..fe235f45a1e6401dd190c2c6c9e29ffb652cf553 100644 (file)
@@ -597,12 +597,14 @@ SPAN_DECLARE(dtmf_tx_state_t *) dtmf_tx_init(dtmf_tx_state_t *s,
 
 SPAN_DECLARE(int) dtmf_tx_release(dtmf_tx_state_t *s)
 {
+    queue_release(&s->queue.queue);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
 
 SPAN_DECLARE(int) dtmf_tx_free(dtmf_tx_state_t *s)
 {
+    queue_release(&s->queue.queue);
     span_free(s);
     return 0;
 }
index 998af14177f5c15aedbc74d774cf16e39e1881a8..ea6a1d523ae7f7af8e28cc6c04cabeaa5917d678 100644 (file)
@@ -515,13 +515,14 @@ SPAN_DECLARE(fax_state_t *) fax_init(fax_state_t *s, int calling_party)
 SPAN_DECLARE(int) fax_release(fax_state_t *s)
 {
     t30_release(&s->t30);
+    v8_release(&s->v8);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
 
 SPAN_DECLARE(int) fax_free(fax_state_t *s)
 {
-    t30_release(&s->t30);
+    fax_release(s);
     span_free(s);
     return 0;
 }
index d337ee98a2156eccf49d88684b6ca5c5d976d90d..64a45d04959096c99ae42025c29dba01b2c1a59c 100644 (file)
@@ -546,7 +546,7 @@ static int floyd_steinberg_dither_row(image_translate_state_t *s, uint8_t buf[])
         s->pixel_row[0][x - 1] = saturateu8(s->pixel_row[0][x - 1] + (7*quant_error)/16);
         s->pixel_row[1][x + 0] = saturateu8(s->pixel_row[1][x + 0] + (5*quant_error)/16);
         s->pixel_row[1][x - 1] = saturateu8(s->pixel_row[1][x - 1] + (1*quant_error)/16);
-        for (  ;  x > 0;  x--)
+        while (--x > 0)
         {
             old_pixel = s->pixel_row[0][x];
             new_pixel = find_closest_palette_color(old_pixel);
@@ -574,7 +574,7 @@ static int floyd_steinberg_dither_row(image_translate_state_t *s, uint8_t buf[])
         s->pixel_row[0][x + 1] = saturateu8(s->pixel_row[0][x + 1] + (7*quant_error)/16);
         s->pixel_row[1][x + 0] = saturateu8(s->pixel_row[1][x + 0] + (5*quant_error)/16);
         s->pixel_row[1][x + 1] = saturateu8(s->pixel_row[1][x + 1] + (1*quant_error)/16);
-        for (  ;  x < s->output_width - 1;  x++)
+        while (++x < s->output_width - 1)
         {
             old_pixel = s->pixel_row[0][x];
             new_pixel = find_closest_palette_color(old_pixel);
@@ -772,10 +772,7 @@ SPAN_DECLARE(image_translate_state_t *) image_translate_init(image_translate_sta
     s->output_bytes_per_pixel = image_format_to_bytes_per_pixel(s->output_format);
 
     s->resize = (output_width > 0);
-    if (s->resize)
-        s->output_width = output_width;
-    else
-        s->output_width = s->input_width;
+    s->output_width = (s->resize)  ?  output_width  :  s->input_width;
 
     if (image_translate_restart(s, input_length))
         return NULL;
index 39c972a35082131dc0f00dc4316e26f1e08baa7c..dadb9b50efcf84aacae165ad2a46ceb400690d3a 100644 (file)
@@ -3619,7 +3619,7 @@ static void process_state_f_doc_non_ecm(t30_state_t *s, const uint8_t *msg, int
         /* Treat this as a bad quality page. */
         if (s->phase_d_handler)
             s->phase_d_handler(s->phase_d_user_data, fcf);
-        s->next_rx_step = msg[2] & 0xFE;
+        s->next_rx_step = fcf;
         queue_phase(s, T30_PHASE_D_TX);
         set_state(s, T30_STATE_III_Q_RTN);
         send_simple_frame(s, T30_RTN);
@@ -3634,7 +3634,7 @@ static void process_state_f_doc_non_ecm(t30_state_t *s, const uint8_t *msg, int
         /* Treat this as a bad quality page. */
         if (s->phase_d_handler)
             s->phase_d_handler(s->phase_d_user_data, fcf);
-        s->next_rx_step = msg[2] & 0xFE;
+        s->next_rx_step = fcf;
         /* Return to phase B */
         queue_phase(s, T30_PHASE_B_TX);
         set_state(s, T30_STATE_III_Q_RTN);
@@ -3649,7 +3649,7 @@ static void process_state_f_doc_non_ecm(t30_state_t *s, const uint8_t *msg, int
         /* Treat this as a bad quality page. */
         if (s->phase_d_handler)
             s->phase_d_handler(s->phase_d_user_data, fcf);
-        s->next_rx_step = msg[2] & 0xFE;
+        s->next_rx_step = fcf;
         queue_phase(s, T30_PHASE_D_TX);
         set_state(s, T30_STATE_III_Q_RTN);
         send_simple_frame(s, T30_RTN);
index ef8dcd16f6f7b46b978af9ddebba8f0b732f8ac6..ddc330694d08986479e0b4708d287747fe1f7604 100644 (file)
@@ -3045,6 +3045,8 @@ SPAN_DECLARE(t31_state_t *) t31_init(t31_state_t *s,
     s->modem = FAX_MODEM_NONE;
     s->at_state.transmit = true;
 
+    if (s->rx_queue)
+        queue_free(s->rx_queue);
     if ((s->rx_queue = queue_init(NULL, 4096, QUEUE_WRITE_ATOMIC | QUEUE_READ_ATOMIC)) == NULL)
     {
         if (alloced)
@@ -3070,6 +3072,9 @@ SPAN_DECLARE(t31_state_t *) t31_init(t31_state_t *s,
 SPAN_DECLARE(int) t31_release(t31_state_t *s)
 {
     at_reset_call_info(&s->at_state);
+    v8_release(&s->audio.v8);
+    fax_modems_release(&s->audio.modems);
+    queue_free(s->rx_queue);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
index c944f6d8b1238cfe8f99b872ad134f596d8299d8..c273326fdb542a34b8b901a1eba33534af4e80c3 100644 (file)
@@ -1644,6 +1644,35 @@ SPAN_DECLARE(int) t4_tx_set_row_read_handler(t4_tx_state_t *s, t4_row_read_handl
 }
 /*- End of function --------------------------------------------------------*/
 
+static int release_encoder(t4_tx_state_t *s)
+{
+    switch (s->metadata.compression)
+    {
+    case T4_COMPRESSION_T4_1D:
+    case T4_COMPRESSION_T4_2D:
+    case T4_COMPRESSION_T6:
+        return t4_t6_encode_release(&s->encoder.t4_t6);
+    case T4_COMPRESSION_T85:
+    case T4_COMPRESSION_T85_L0:
+        return t85_encode_release(&s->encoder.t85);
+#if defined(SPANDSP_SUPPORT_T88)
+    case T4_COMPRESSION_T88:
+        return t88_encode_release(&s->encoder.t88);
+#endif
+    case T4_COMPRESSION_T42_T81:
+    case T4_COMPRESSION_SYCC_T81:
+        return t42_encode_release(&s->encoder.t42);
+    case T4_COMPRESSION_T43:
+        return t43_encode_release(&s->encoder.t43);
+#if defined(SPANDSP_SUPPORT_T45)
+    case T4_COMPRESSION_T45:
+        return t45_encode_release(&s->encoder.t45);
+#endif
+    }
+    return -1;
+}
+/*- End of function --------------------------------------------------------*/
+
 SPAN_DECLARE(int) t4_tx_set_tx_image_format(t4_tx_state_t *s,
                                             int supported_compressions,
                                             int supported_image_sizes,
@@ -2002,6 +2031,7 @@ SPAN_DECLARE(int) t4_tx_set_tx_image_format(t4_tx_state_t *s,
             case T4_COMPRESSION_T6:
                 break;
             default:
+                release_encoder(s);
                 t4_t6_encode_init(&s->encoder.t4_t6, compression, s->metadata.image_width, s->metadata.image_length, s->row_handler, s->row_handler_user_data);
                 break;
             }
@@ -2018,6 +2048,7 @@ SPAN_DECLARE(int) t4_tx_set_tx_image_format(t4_tx_state_t *s,
             case T4_COMPRESSION_T85_L0:
                 break;
             default:
+                release_encoder(s);
                 t85_encode_init(&s->encoder.t85, s->metadata.image_width, s->metadata.image_length, s->row_handler, s->row_handler_user_data);
                 break;
             }
@@ -2046,6 +2077,7 @@ SPAN_DECLARE(int) t4_tx_set_tx_image_format(t4_tx_state_t *s,
             case T4_COMPRESSION_SYCC_T81:
                 break;
             default:
+                release_encoder(s);
                 t42_encode_init(&s->encoder.t42, s->metadata.image_width, s->metadata.image_length, s->row_handler, s->row_handler_user_data);
                 break;
             }
@@ -2058,6 +2090,7 @@ SPAN_DECLARE(int) t4_tx_set_tx_image_format(t4_tx_state_t *s,
             case T4_COMPRESSION_T43:
                 break;
             default:
+                release_encoder(s);
                 t43_encode_init(&s->encoder.t43, s->metadata.image_width, s->metadata.image_length, s->row_handler, s->row_handler_user_data);
                 break;
             }
@@ -2071,6 +2104,7 @@ SPAN_DECLARE(int) t4_tx_set_tx_image_format(t4_tx_state_t *s,
             case T4_COMPRESSION_T45:
                 break;
             default:
+                release_encoder(s);
                 t45_encode_init(&s->encoder.t45, s->metadata.image_width, s->metadata.image_length, s->row_handler, s->row_handler_user_data);
                 break;
             }
@@ -2603,30 +2637,7 @@ SPAN_DECLARE(int) t4_tx_release(t4_tx_state_t *s)
         span_free(s->colour_map);
         s->colour_map = NULL;
     }
-    switch (s->metadata.compression)
-    {
-    case T4_COMPRESSION_T4_1D:
-    case T4_COMPRESSION_T4_2D:
-    case T4_COMPRESSION_T6:
-        return t4_t6_encode_release(&s->encoder.t4_t6);
-    case T4_COMPRESSION_T85:
-    case T4_COMPRESSION_T85_L0:
-        return t85_encode_release(&s->encoder.t85);
-#if defined(SPANDSP_SUPPORT_T88)
-    case T4_COMPRESSION_T88:
-        return t88_encode_release(&s->encoder.t88);
-#endif
-    case T4_COMPRESSION_T42_T81:
-    case T4_COMPRESSION_SYCC_T81:
-        return t42_encode_release(&s->encoder.t42);
-    case T4_COMPRESSION_T43:
-        return t43_encode_release(&s->encoder.t43);
-#if defined(SPANDSP_SUPPORT_T45)
-    case T4_COMPRESSION_T45:
-        return t45_encode_release(&s->encoder.t45);
-#endif
-    }
-    return -1;
+    return release_encoder(s);
 }
 /*- End of function --------------------------------------------------------*/
 
index a687961c025787a9c4045e3f3470771ddd49211c..2bc32e7212498f49e7657cec229cbcfd8d959727 100644 (file)
@@ -853,6 +853,12 @@ SPAN_DECLARE(int) t85_decode_new_plane(t85_decode_state_t *s)
 }
 /*- End of function --------------------------------------------------------*/
 
+SPAN_DECLARE(logging_state_t *) t85_decode_get_logging_state(t85_decode_state_t *s)
+{
+    return &s->logging;
+}
+/*- End of function --------------------------------------------------------*/
+
 SPAN_DECLARE(int) t85_decode_restart(t85_decode_state_t *s)
 {
     s->xd = 0;
@@ -888,12 +894,6 @@ SPAN_DECLARE(int) t85_decode_restart(t85_decode_state_t *s)
 }
 /*- End of function --------------------------------------------------------*/
 
-SPAN_DECLARE(logging_state_t *) t85_decode_get_logging_state(t85_decode_state_t *s)
-{
-    return &s->logging;
-}
-/*- End of function --------------------------------------------------------*/
-
 SPAN_DECLARE(t85_decode_state_t *) t85_decode_init(t85_decode_state_t *s,
                                                    t4_row_write_handler_t handler,
                                                    void *user_data)
index ed4d1adaffda83397d0d62bcb3c34f6d7109903e..8c35c5465b304507ff980b08a0b6e8c1c256c739 100644 (file)
@@ -645,6 +645,12 @@ SPAN_DECLARE(int) t85_encode_set_row_read_handler(t85_encode_state_t *s,
 }
 /*- End of function --------------------------------------------------------*/
 
+SPAN_DECLARE(logging_state_t *) t85_encode_get_logging_state(t85_encode_state_t *s)
+{
+    return &s->logging;
+}
+/*- End of function --------------------------------------------------------*/
+
 SPAN_DECLARE(int) t85_encode_restart(t85_encode_state_t *s, uint32_t image_width, uint32_t image_length)
 {
     int bytes_per_row;
@@ -681,12 +687,6 @@ SPAN_DECLARE(int) t85_encode_restart(t85_encode_state_t *s, uint32_t image_width
 }
 /*- End of function --------------------------------------------------------*/
 
-SPAN_DECLARE(logging_state_t *) t85_encode_get_logging_state(t85_encode_state_t *s)
-{
-    return &s->logging;
-}
-/*- End of function --------------------------------------------------------*/
-
 SPAN_DECLARE(t85_encode_state_t *) t85_encode_init(t85_encode_state_t *s,
                                                    uint32_t image_width,
                                                    uint32_t image_length,
index 2378b4f1c82dff01c8803755ddef82e47388562a..6d0ae51071c8c0b069c3854ab8f5eb482e93b04e 100644 (file)
@@ -220,7 +220,7 @@ SPAN_DECLARE(int) time_scale(time_scale_state_t *s, int16_t out[], int16_t in[],
         {
             memcpy(&out[out_len], s->buf, sizeof(int16_t)*s->lcp);
             out_len += s->lcp;
-            memcpy(s->buf, &s->buf[s->lcp], sizeof(int16_t)*(s->buf_len - s->lcp));
+            memmove(s->buf, &s->buf[s->lcp], sizeof(int16_t)*(s->buf_len - s->lcp));
             if (len - in_len < s->lcp)
             {
                 /* Cannot continue without more samples */
index 0af5a6313ae42292c396c6c7d272b73afadf766d..3b72b296e111294dff82c4d72b0b40fc12dbff9c 100644 (file)
@@ -1220,12 +1220,14 @@ SPAN_DECLARE(v18_state_t *) v18_init(v18_state_t *s,
 
 SPAN_DECLARE(int) v18_release(v18_state_t *s)
 {
+    queue_release(&s->queue.queue);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
 
 SPAN_DECLARE(int) v18_free(v18_state_t *s)
 {
+    queue_release(&s->queue.queue);
     span_free(s);
     return 0;
 }
index 5052e45d68d44b5ec20f6eecd3935485bdee949c..c9c2e3a1448dea1733f9660bd756085597737808 100644 (file)
@@ -1104,7 +1104,8 @@ SPAN_DECLARE(int) v8_restart(v8_state_t *s, bool calling_party, v8_parms_t *parm
         modem_connect_tones_tx_init(&s->ansam_tx, s->parms.modem_connect_tone);
         s->modem_connect_tone_tx_on = ms_to_samples(75) + 1;
     }
-
+    if (s->tx_queue)
+        queue_free(s->tx_queue);
     if ((s->tx_queue = queue_init(NULL, 1024, 0)) == NULL)
         return -1;
     return 0;
index 936fd557de3a6e631b72a608b92ac0256894376b..b1c9c4f42d71ab1baf84f249cba4748abc7320eb 100644 (file)
@@ -106,7 +106,7 @@ static int mitel_cm7291_side_2_and_bellcore_tests(void)
 
     /* The remainder of the Mitel tape is the talk-off test */
     /* Here we use the Bellcore test tapes (much tougher), in six
-      files - 1 from each side of the original 3 cassette tapes */
+       files - 1 from each side of the original 3 cassette tapes */
     /* Bellcore say you should get no more than 470 false detections with
        a good receiver. Dialogic claim 20. Of course, we can do better than
        that, eh? */
@@ -135,6 +135,7 @@ static int mitel_cm7291_side_2_and_bellcore_tests(void)
         return -1;
     }
     printf("    Passed\n");
+    ademco_contactid_sender_free(sender);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
@@ -254,6 +255,7 @@ static int end_to_end_tests(void)
 
         sf_writef_short(outhandle, sndfile_buf, SAMPLES_PER_CHUNK);
     }
+    codec_munge_free(munge);
     if (!rx_callback_reported)
     {
         fprintf(stderr, "    Report not received\n");
@@ -266,6 +268,8 @@ static int end_to_end_tests(void)
         return -1;
     }
     printf("    Passed\n");
+    ademco_contactid_sender_free(sender);
+    ademco_contactid_receiver_free(receiver);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
@@ -323,6 +327,8 @@ static int encode_decode_tests(void)
     printf("'%s'\n", buf);
     printf("\n");
     printf("    Passed\n");
+    ademco_contactid_sender_free(sender);
+    ademco_contactid_receiver_free(receiver);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
index 6826e030dbb759d1c7bd613e543c0f37ff1bd81b..d771afecf209334c83d1d9b68a7f3ac61f2f2cfa 100644 (file)
@@ -564,6 +564,7 @@ int main(int argc, char *argv[])
         exit(2);
     }
     printf("Tests passed.\n");
+    at_free(at_state);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
index f5ba0c71ac5d77ff63b8b6c3462eb950b0bab5fe..c105a9b243a809823fc30b6d414d9938f9cbbc29 100644 (file)
@@ -75,7 +75,11 @@ int main(int argc, char *argv[])
         clip_high = 0;
         clip_low = 0;
         total = 0.0;
-        noise_source = awgn_init_dbm0(NULL, idum, (float) j);
+        if ((noise_source = awgn_init_dbm0(NULL, idum, (float) j)) == NULL)
+        {
+            printf("Failed to allocation AWGN source\n");
+            exit(2);
+        }
         total_samples = 1000000;
         for (i = 0;  i < total_samples;  i++)
         {
@@ -99,6 +103,7 @@ int main(int argc, char *argv[])
             printf("Test failed.\n");
             exit(2);
         }
+        awgn_free(noise_source);
     }
     /* Now look at the statistical spread of the results, by collecting data in
        bins from a large number of samples. Use a fairly high noise level, but
@@ -107,7 +112,11 @@ int main(int argc, char *argv[])
     memset(bins, 0, sizeof(bins));
     clip_high = 0;
     clip_low = 0;
-    awgn_init_dbm0(noise_source, idum, -15);
+    if ((noise_source = awgn_init_dbm0(NULL, idum, -15.0)) == NULL)
+    {
+        printf("Failed to allocation AWGN source\n");
+        exit(2);
+    }
     total_samples = 10000000;
     for (i = 0;  i < total_samples;  i++)
     {
@@ -134,7 +143,7 @@ int main(int argc, char *argv[])
         /* Now send it out for graphing. */
         printf("%6d %.7f %.7f\n", i - 32768, x, p);
     }
-
+    awgn_free(noise_source);
     printf("Tests passed.\n");
     return 0;
 }
index 678c4f8e62d20dea10b4532b29ea35fb0427f4f6..31fbd4068aa655b3f2e5519149a6ce9da530be2b 100644 (file)
@@ -512,6 +512,7 @@ int main(int argc, char *argv[])
         printf("    Failed\n");
         exit(2);
     }
+    bell_mf_rx_free(mf_state);
     printf("    Passed\n");
 
     /* The remainder of the Mitel tape is the talk-off test. This is
@@ -540,6 +541,7 @@ int main(int argc, char *argv[])
         printf("    Failed\n");
         exit(2);
     }
+    bell_mf_rx_free(mf_state);
     printf("    Passed\n");
 
     duration = time (NULL) - now;
index 69f6c77a2d363851eab7130b252e9e05e24b500f..6c88f985ff385d019c0567c84097b51182f40758 100644 (file)
@@ -157,6 +157,7 @@ int main(int argc, char *argv[])
         fprintf(stderr, "    Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
         exit (2);
     }
+    bell_mf_tx_free(gen);
 
     return 0;
 }
index 5b6bb6151f62e892be221198ad1bb127daea3401..214815d6f24e91a431ae0d2e19b298c7e7999f75 100644 (file)
@@ -97,9 +97,11 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
-    bert_init(tx_bert, 0, BERT_PATTERN_ONES, 300, 20);
-    bert_init(rx_bert, 0, BERT_PATTERN_ONES, 300, 20);
+    tx_bert = bert_init(NULL, 0, BERT_PATTERN_ONES, 300, 20);
+    rx_bert = bert_init(NULL, 0, BERT_PATTERN_ONES, 300, 20);
     for (i = 0;  i < 511*2;  i++)
     {
         bit = bert_get_bit(tx_bert);
@@ -112,6 +114,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_1_TO_7, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_1_TO_7, 300, 20);
@@ -127,6 +131,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_1_TO_3, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_1_TO_3, 300, 20);
@@ -142,6 +148,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_1_TO_1, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_1_TO_1, 300, 20);
@@ -157,6 +165,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_3_TO_1, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_3_TO_1, 300, 20);
@@ -172,6 +182,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_7_TO_1, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_7_TO_1, 300, 20);
@@ -187,6 +199,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O153_9, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O153_9, 300, 20);
@@ -231,6 +245,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O152_11, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O152_11, 300, 20);
@@ -275,6 +291,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O151_15, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O151_15, 300, 20);
@@ -319,6 +337,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O151_20, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O151_20, 300, 20);
@@ -360,6 +380,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O151_23, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_ITU_O151_23, 300, 20);
@@ -401,6 +423,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     tx_bert = bert_init(NULL, 0, BERT_PATTERN_QBF, 300, 20);
     rx_bert = bert_init(NULL, 0, BERT_PATTERN_QBF, 300, 20);
@@ -416,6 +440,8 @@ int main(int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    bert_free(tx_bert);
+    bert_free(rx_bert);
 
     /* Test the mechanism for categorising the error rate into <10^x bands */
     /* TODO: The result of this test is not checked automatically */
@@ -447,6 +473,7 @@ int main(int argc, char *argv[])
         //    bert_put_bit(bert, bit);
         bert_put_bit(bert, bit);
     }
+    bert_free(bert);
 
     printf("Tests passed.\n");
     return 0;
index 6fae1458a7ec9153162f43aecd2b04ab9830605c..0150aa02ad6b4e925a4bef9e3824c58662c94bdc 100644 (file)
@@ -84,6 +84,7 @@ int main (int argc, char *argv[])
         printf("Test failed.\n");
         exit(2);
     }
+    awgn_free(noise_source);
     printf("Test passed.\n");
     return 0;
 }
index 947f80589f5c00487b68353c3085943ab806b15e..d0fa87a3b13e2c8816d1ff31a62ca80d9825b062 100644 (file)
@@ -613,6 +613,7 @@ static void mitel_cm7291_side_1_tests(void)
         printf("    Failed\n");
         exit(2);
     }
+    dtmf_rx_free(dtmf_state);
     printf("    Passed\n");
 }
 /*- End of function --------------------------------------------------------*/
@@ -686,6 +687,7 @@ static void mitel_cm7291_side_2_and_bellcore_tests(void)
         exit(2);
     }
     printf("    Passed\n");
+    dtmf_rx_free(dtmf_state);
 }
 /*- End of function --------------------------------------------------------*/
 
@@ -741,6 +743,7 @@ static void dial_tone_tolerance_tests(void)
         exit(2);
     }
     printf("    Passed\n");
+    dtmf_rx_free(dtmf_state);
 }
 /*- End of function --------------------------------------------------------*/
 
@@ -817,6 +820,7 @@ static void callback_function_tests(void)
         printf("    Failed\n");
         exit(2);
     }
+    dtmf_rx_free(dtmf_state);
 }
 /*- End of function --------------------------------------------------------*/
 
@@ -915,6 +919,7 @@ int main(int argc, char *argv[])
         printf("Tests passed in %ds\n", duration);
     }
 
+    codec_munge_free(munge);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
index 3f6f234ce76413cedd3bc4f05358f786cd31fb50..1d0ad29178a2b517f9fd238839900c571642c6ef 100644 (file)
@@ -211,6 +211,7 @@ int main(int argc, char *argv[])
         fprintf(stderr, "    Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
         exit(2);
     }
+    dtmf_tx_free(gen);
 
     return 0;
 }
index 12cc11bb9258009aaea63d4fd7c73d8f8eea7e8d..7b624bd6f82ddac7f4cb655d0bce46615db6eb65 100644 (file)
@@ -356,7 +356,7 @@ static void v21_put_bit(void *user_data, int bit)
         }
         return;
     }
-    fprintf(stderr, "V.21 Rx bit %d - %d\n", rx_bits++, bit);
+    //fprintf(stderr, "V.21 Rx bit %d - %d\n", rx_bits++, bit);
     if (fast_trained == FAX_NONE)
         hdlc_rx_put_bit(&hdlcrx, bit);
 }
index 96105edcaeef3830c97baff797c6e954b7ec1c89..9dbf6ce4e6cfa5c4287d098016e2019467d68586 100644 (file)
@@ -116,13 +116,14 @@ enum
 
 int mode[2] = {AUDIO_FAX, AUDIO_FAX};
 
-t30_state_t *t30_state[2];
-fax_state_t *fax_state[2];
-t38_gateway_state_t *t38_gateway_state[2];
-t38_terminal_state_t *t38_state[2];
-t38_core_state_t *t38_core_state[2];
-g1050_state_t *g1050_path[2];
-awgn_state_t *awgn_state[2];
+t30_state_t *t30_state[2] = {NULL, NULL};
+fax_state_t *fax_state[2] = {NULL, NULL};
+t38_gateway_state_t *t38_gateway_state[2] = {NULL, NULL};
+t38_terminal_state_t *t38_state[2] = {NULL, NULL};
+t38_core_state_t *t38_core_state[2] = {NULL, NULL};
+faxtester_state_t *faxtester[2] = {NULL, NULL};
+g1050_state_t *g1050_path[2] = {NULL, NULL};
+awgn_state_t *awgn_state[2] = {NULL, NULL};
 int16_t audio_buffer[2*2][SAMPLES_PER_CHUNK];
 
 int t38_subst_seq[2] = {0, 0};
@@ -1264,11 +1265,16 @@ int main(int argc, char *argv[])
                 break;
         }
         if (mode[i] == T38_TERMINAL_FAX)
-            t38_terminal_release(t38_state[i]);
+            t38_terminal_free(t38_state[i]);
         else
-            fax_release(fax_state[i]);
+            fax_free(fax_state[i]);
         if (mode[i] == T38_GATEWAY_FAX)
-            t38_gateway_release(t38_gateway_state[i]);
+            t38_gateway_free(t38_gateway_state[i]);
+        if (g1050_path[i])
+        {
+            g1050_free(g1050_path[i]);
+            g1050_path[i] = NULL;
+        }
     }
     if (i < 2)
     {
index db8a1335a7293a98a4de8e3ae16f12f89d39ebc7..1dc3e6cc1280fbae88b7a882cf99ed5384653787 100644 (file)
@@ -296,6 +296,7 @@ int main(int argc, char *argv[])
             fprintf(stderr, "    Cannot close audio file '%s'\n", decode_test_file);
             exit(2);
         }
+        fsk_rx_free(caller_rx);
     }
     else
     {
@@ -357,6 +358,7 @@ int main(int argc, char *argv[])
             printf("Tests failed.\n");
             exit(2);
         }
+        fsk_rx_free(caller_rx);
 
         printf("Test with BERT\n");
         test_bps = preset_fsk_specs[modem_under_test_1].baud_rate;
@@ -491,6 +493,7 @@ int main(int argc, char *argv[])
                     fsk_rx_set_modem_status_handler(caller_rx, rx_status, (void *) &caller_rx);
                 }
                 noise_level++;
+                both_ways_line_model_free(model);
                 if ((model = both_ways_line_model_init(line_model_no,
                                                        (float) noise_level,
                                                        line_model_no,
@@ -511,6 +514,19 @@ int main(int argc, char *argv[])
                 bert_set_report(&answerer_bert, 100000, reporter, (void *) (intptr_t) 2);
             }
         }
+        bert_release(&caller_bert);
+        bert_release(&answerer_bert);
+        if (modem_under_test_1 >= 0)
+        {
+            fsk_tx_free(caller_tx);
+            fsk_rx_free(answerer_rx);
+        }
+        if (modem_under_test_2 >= 0)
+        {
+            fsk_tx_free(answerer_tx);
+            fsk_rx_free(caller_rx);
+        }
+        both_ways_line_model_free(model);
         printf("Tests passed.\n");
     }
     if (log_audio)
index a7919e95753e46b3c03bd48bdb2378b06de95b1f..397a2c6225c8816d7a9ac407d512ddf01050a95e 100644 (file)
@@ -233,6 +233,8 @@ int main(int argc, char *argv[])
         exit(2);
     }
     printf("%.3f%% of packets lost\n", 100.0*(packets_put - packets_really_put)/packets_put);
+    g1050_free(s);
+    free(packet_arrival_times);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
index 41351496c6921f6ba90e7a6df53ff81239f1b36d..6eb9d7b48ff8ecfb030920e27eea8422bd1c8582 100644 (file)
@@ -309,6 +309,15 @@ int main(int argc, char *argv[])
         printf("%d\n", css_c3[i]);
     signal_free(&local_css);
     signal_free(&far_css);
+    fir32_free(&line_model_d2);
+    fir32_free(&line_model_d3);
+    fir32_free(&line_model_d4);
+    fir32_free(&line_model_d5);
+    fir32_free(&line_model_d6);
+    fir32_free(&line_model_d7);
+    fir32_free(&line_model_d8);
+    fir32_free(&line_model_d9);
+    fir_float_free(&level_measurement_bp);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
index c6ef2b1f78b04ea0e69c72f96d619142ed1f4497..9efb8ebaaab975477091c5c2bea16394a945859f 100644 (file)
@@ -314,9 +314,9 @@ static void compliance_tests(int log_audio)
             }
         }
     }
-    g711_release(enc_state);
-    g711_release(transcode);
-    g711_release(dec_state);
+    g711_free(enc_state);
+    g711_free(transcode);
+    g711_free(dec_state);
 
     if (log_audio)
     {
index ac72e4c7b65da4c07b4cb2c8917da08fa2d2f949..6a4251bb1bc9159a4306614784c3116cdfdb60b9 100644 (file)
@@ -278,6 +278,7 @@ static void itu_compliance_tests(void)
             exit(2);
         }
         printf("Test passed\n");
+        g722_encode_free(enc_state);
     }
 #endif
 #if 1
@@ -346,6 +347,7 @@ static void itu_compliance_tests(void)
                 exit(2);
             }
             printf("Test passed\n");
+            g722_decode_free(dec_state);
         }
     }
 #endif
@@ -403,6 +405,11 @@ static void signal_to_distortion_tests(void)
         printf("%10d, %10d, %f\n", in_level, out_level, (float) out_level/in_level);
     }
     while (len > 0);
+    swept_tone_free(swept);
+    g722_encode_free(enc_state);
+    g722_decode_free(dec_state);
+    power_meter_free(in_meter);
+    power_meter_free(out_meter);
 }
 /*- End of function --------------------------------------------------------*/
 
@@ -657,6 +664,7 @@ int main(int argc, char *argv[])
                 fprintf(stderr, "    Cannot close audio file '%s'\n", IN_FILE_NAME);
                 exit(2);
             }
+            g722_encode_free(enc_state);
         }
         else
         {
@@ -669,6 +677,7 @@ int main(int argc, char *argv[])
                 fprintf(stderr, "    Cannot close audio file '%s'\n", OUT_FILE_NAME);
                 exit(2);
             }
+            g722_decode_free(dec_state);
         }
         else
         {
index 0bba6e2fcc595d520771d43781e0a2a22f56d570..75d1a542cde0c0a8ff8e989ce385486fabddfa3a 100644 (file)
@@ -1193,8 +1193,8 @@ static void itu_compliance_tests(void)
 
 int main(int argc, char *argv[])
 {
-    g726_state_t enc_state;
-    g726_state_t dec_state;
+    g726_state_t *enc_state;
+    g726_state_t *dec_state;
     int opt;
     bool itutests;
     int bit_rate;
@@ -1251,13 +1251,13 @@ int main(int argc, char *argv[])
         }
 
         printf("ADPCM packing is %d\n", packing);
-        g726_init(&enc_state, bit_rate, G726_ENCODING_LINEAR, packing);
-        g726_init(&dec_state, bit_rate, G726_ENCODING_LINEAR, packing);
+        enc_state = g726_init(NULL, bit_rate, G726_ENCODING_LINEAR, packing);
+        dec_state = g726_init(NULL, bit_rate, G726_ENCODING_LINEAR, packing);
 
         while ((frames = sf_readf_short(inhandle, amp, 159)))
         {
-            adpcm = g726_encode(&enc_state, adpcmdata, amp, frames);
-            frames = g726_decode(&dec_state, amp, adpcmdata, adpcm);
+            adpcm = g726_encode(enc_state, adpcmdata, amp, frames);
+            frames = g726_decode(dec_state, amp, adpcmdata, adpcm);
             sf_writef_short(outhandle, amp, frames);
         }
         if (sf_close_telephony(inhandle))
@@ -1271,6 +1271,8 @@ int main(int argc, char *argv[])
             exit(2);
         }
         printf("'%s' transcoded to '%s' at %dbps.\n", IN_FILE_NAME, OUT_FILE_NAME, bit_rate);
+        g726_free(enc_state);
+        g726_free(dec_state);
     }
     return 0;
 }
index 346f574e995d30826cda29a5f57aebccdb488e9d..06177fd9fd9fe1366632f089dc5e3d0840196f03 100644 (file)
@@ -321,7 +321,7 @@ static int perform_linear_test(int full, int disk, const char *name)
                 mismatches++;
             }
         }
-        gsm0610_release(gsm0610_enc_state);
+        gsm0610_free(gsm0610_enc_state);
         if (mismatches)
         {
             printf("Test failed: %d of %d samples mismatch\n", mismatches, xxx);
@@ -350,7 +350,7 @@ static int perform_linear_test(int full, int disk, const char *name)
         printf("Test failed: %d of %d samples mismatch\n", mismatches, vector_len);
         exit(2);
     }
-    gsm0610_release(gsm0610_dec_state);
+    gsm0610_free(gsm0610_dec_state);
     printf("Test passed\n");
     return 0;
 }
@@ -405,7 +405,7 @@ static int perform_law_test(int full, int law, const char *name)
             exit(2);
         }
         printf("Test passed\n");
-        gsm0610_release(gsm0610_enc_state);
+        gsm0610_free(gsm0610_enc_state);
     }
 
     if ((gsm0610_dec_state = gsm0610_init(NULL, GSM0610_PACKING_NONE)) == NULL)
@@ -438,7 +438,7 @@ static int perform_law_test(int full, int law, const char *name)
         printf("Test failed: %d of %d samples mismatch\n", mismatches, vector_len);
         exit(2);
     }
-    gsm0610_release(gsm0610_dec_state);
+    gsm0610_free(gsm0610_dec_state);
     printf("Test passed\n");
     return 0;
 }
@@ -613,8 +613,8 @@ int main(int argc, char *argv[])
             fprintf(stderr, "    Cannot close audio file '%s'\n", OUT_FILE_NAME);
             exit(2);
         }
-        gsm0610_release(gsm0610_enc_state);
-        gsm0610_release(gsm0610_dec_state);
+        gsm0610_free(gsm0610_enc_state);
+        gsm0610_free(gsm0610_dec_state);
     }
     return 0;
 }
index e0803303137068b5a41787a64310e106eb6bfc62..46645f09f05e7336d4251e7e7cb072ed267f5c7f 100644 (file)
@@ -187,8 +187,8 @@ int main(int argc, char *argv[])
         fprintf(stderr, "    Cannot close audio file '%s'\n", OUT_FILE_NAME);
         exit(2);
     }
-    ima_adpcm_release(ima_enc_state);
-    ima_adpcm_release(ima_dec_state);
+    ima_adpcm_free(ima_enc_state);
+    ima_adpcm_free(ima_dec_state);
 
     printf("Pre samples: %d\n", total_pre_samples);
     printf("Compressed bytes: %d\n", total_compressed_bytes);
index 7b4fa9d3d3aa1c7280a4a1a6b3bcc82fada24bcf..9ec0691fbe1601384873eea5670339e41d812a7e 100644 (file)
@@ -811,6 +811,8 @@ static void lenna_tests(int output_width, int output_length_scaling, const char
     TIFFWriteDirectory(out_file);
     TIFFClose(out_file);
     image_translate_free(s);
+    free(image);
+    free(image2);
 }
 /*- End of function --------------------------------------------------------*/
 
index 8d31413cd4925754403222d4cea0d4fb1c814e38..b44f9771de47280e294bb0f1d405114a57274b3c 100644 (file)
@@ -88,6 +88,8 @@ static void complexify_tests(void)
         out[2*i] = cc.re;
         out[2*i + 1] = cc.im;
     }
+    awgn_release(&noise1);
+    complexify_free(s);
     outframes = sf_writef_short(outhandle, out, 20000);
     if (outframes != 20000)
     {
@@ -183,7 +185,7 @@ static void test_one_way_model(int line_model_no, int speech_test)
         fprintf(stderr, "    Cannot close audio file '%s'\n", OUT_FILE_NAME1);
         exit(2);
     }
-    one_way_line_model_release(model);
+    one_way_line_model_free(model);
 }
 /*- End of function --------------------------------------------------------*/
 
@@ -302,7 +304,7 @@ static void test_both_ways_model(int line_model_no, int speech_test)
         fprintf(stderr, "    Cannot close audio file '%s'\n", OUT_FILE_NAME2);
         exit(2);
     }
-    both_ways_line_model_release(model);
+    both_ways_line_model_free(model);
 }
 /*- End of function --------------------------------------------------------*/
 
index 666fc1e9bbb7ae47838968311a00a9859e107f66..2ba4bac9dbe284597c89722d595de0bf589abc24 100644 (file)
@@ -203,6 +203,8 @@ int main(int argc, char *argv[])
 
     span_log_set_message_handler(log, &message_handler, NULL);
 
+    span_log_free(log);
+
     printf("Tests passed.\n");
     return 0;
 }
index 0ecacfb8479b09875ce36947b964bd94c369cd48..a733659bc2f2be5d23e1b20685ca6b2be1512f0e 100644 (file)
@@ -236,8 +236,8 @@ int main(int argc, char *argv[])
         close(compress_file);
     if (decompress)
         close(decompress_file);
-    lpc10_encode_release(lpc10_enc_state);
-    lpc10_decode_release(lpc10_dec_state);
+    lpc10_encode_free(lpc10_enc_state);
+    lpc10_decode_free(lpc10_dec_state);
 
     if (!decompress)
     {
index f41208239c7d8d3e3c0e28af38e453275b4d9486..84604b69beaa88b0690e61ad6f4467328e146703 100644 (file)
@@ -276,15 +276,15 @@ int main(int argc, char *argv[])
         }
 
 
-        oki_adpcm_release(oki_enc_state);
+        oki_adpcm_free(oki_enc_state);
         if (sf_close_telephony(inhandle))
         {
             fprintf(stderr, "    Cannot close audio file '%s'\n", in_file_name);
             exit(2);
         }
     }
-    oki_adpcm_release(oki_dec_state);
-    oki_adpcm_release(oki_dec_state2);
+    oki_adpcm_free(oki_dec_state);
+    oki_adpcm_free(oki_dec_state2);
     if (sf_close_telephony(outhandle))
     {
         fprintf(stderr, "    Cannot close audio file '%s'\n", OUT_FILE_NAME);
index 518fa3a694c969e808a8c7412b741e38a206614b..59287b7d2160421fb7eba2c6f6bae6558dc80375 100644 (file)
@@ -147,6 +147,8 @@ static int power_surge_detector_tests(void)
         exit(2);
     }
     printf("Min on %d, max on %d, min off %d, max off %d\n", extremes[0], extremes[1], extremes[2], extremes[3]);
+    power_surge_detector_free(sig);
+    awgn_free(awgnx);
     return 0;
 }
 /*- End of function --------------------------------------------------------*/
index bc4c5b484033dcb5b2e6d8e05808440f3ef40e3f..da244336c5b8b245783cc1fd4fe89f9eaf539e70 100644 (file)
@@ -181,6 +181,7 @@ static int my_mf_generate(int16_t amp[], char digit)
     {
         tone = tone_gen_init(NULL, &my_mf_digit_tones[cp - r2_mf_tone_codes]);
         len += tone_gen(tone, amp + len, 9999);
+        tone_gen_free(tone);
     }
     return len;
 }
@@ -524,6 +525,7 @@ static int test_a_tone_set(int fwd)
                 if (r2_mf_rx_get(mf_state) != digit)
                     break;
             }
+            awgn_free(noise_source);
             if (j < 500)
                 break;
         }
@@ -541,7 +543,7 @@ static int test_a_tone_set(int fwd)
     printf("Test 8: Callback digit delivery mode.\n");
     callback_ok = false;
     callback_roll = 0;
-    mf_state = r2_mf_rx_init(NULL, fwd, digit_delivery, (void *) 0x12345678);
+    mf_state = r2_mf_rx_init(mf_state, fwd, digit_delivery, (void *) 0x12345678);
     my_mf_gen_init(0.0, -3, 0.0, -3, 68, fwd);
     s = r2_mf_tone_codes;
     noise_source = awgn_init_dbm0(NULL, 1234567, -40.0f);
@@ -560,6 +562,7 @@ static int test_a_tone_set(int fwd)
         codec_munge(amp, len);
         r2_mf_rx(mf_state, amp, len);
     }
+    awgn_free(noise_source);
     if (!callback_ok)
     {
         printf("    Failed\n");
@@ -567,6 +570,8 @@ static int test_a_tone_set(int fwd)
     }
     printf("    Passed\n");
 
+    r2_mf_rx_free(mf_state);
+
     /* The remainder of the Mitel tape is the talk-off test. This is
        meaningless for R2 MF. However the decoder's tolerance of
        out of band noise is significant. */
index 95d8f6b9717a71b29af6e2ce620b2bcab9538451..fe210a2555d24940baf528013153e1ba7ca9e312 100644 (file)
@@ -229,6 +229,10 @@ int main(int argc, char *argv[])
 
     fclose(out_file);
 
+    rfc2198_sim_free(s);
+
+    free(packet_arrival_times);
+
     printf("Put %d packets. Really put %d packets. Got %d packets.\n", packets_put, packets_really_put, packets_got);
     printf("%d OOS packets, %d missing packets\n", oos_packets_got, missing_packets_got - oos_packets_got);
     printf("%d packets queued, %d received\n", packets_really_put, packets_got);
index 00af89eeba77c4f8be67e1bd7b56223c13e603ed..61f93ccb0ebf0f667ba55f408e21160734dfb2a8 100644 (file)
@@ -648,6 +648,8 @@ int main(int argc, char *argv[])
         speech_immunity_tests(&rx_state);
         level_and_ratio_tests(&rx_state, fc);
         sequence_tests(&tx_state, &rx_state, munge);
+        if (munge)
+            codec_munge_free(munge);
     }
     /*endfor*/
 
index aebc54a409af4d9dc4262fb2442cb4047c938c80..8fef1322954350890f6f6d89de2ab507b249212b 100644 (file)
@@ -92,6 +92,10 @@ int main(int argc, char *argv[])
         exit(2);
     }
 
+    swept_tone_free(s);
+
+    power_meter_release(&meter);
+
     printf("Tests passed.\n");
     return 0;
 }
index d9356296e94f5a3658caedf341336f980ff9c8ed..beff7f9ccec53fcd3a2f820db36db3632f7447df 100644 (file)
@@ -852,8 +852,13 @@ static int t30_tests(int t38_mode, int use_gui, int log_audio, int test_sending,
         span_log_bump_samples(at_get_logging_state(t31_get_at_state(t31_state)), SAMPLES_PER_CHUNK);
     }
 
+    g1050_free(path_a_to_b);
+    g1050_free(path_b_to_a);
     if (t38_mode)
-        t38_terminal_release(t38_state);
+        t38_terminal_free(t38_state);
+    else
+        fax_free(fax_state);
+    t31_free(t31_state);
 
     if (decode_test_file)
     {
index 9b4cb4039c026ca9e23c06e8d610fa980240f80d..4ed2bcf7d2874959654ece91b0fcfd199cd02c8b 100644 (file)
@@ -168,6 +168,7 @@ int main(int argc, char *argv[])
     printf("    Done\n");
     t38_non_ecm_buffer_report_input_status(&buffer, &logging);
     t38_non_ecm_buffer_report_output_status(&buffer, &logging);
+    t38_non_ecm_buffer_release(&buffer);
 
     printf("2 - Impose no minimum for the bits per row, different alignment\n");
     t38_non_ecm_buffer_init(&buffer, true, 0);
@@ -233,6 +234,7 @@ int main(int argc, char *argv[])
     }
     t38_non_ecm_buffer_report_input_status(&buffer, &logging);
     t38_non_ecm_buffer_report_output_status(&buffer, &logging);
+    t38_non_ecm_buffer_release(&buffer);
 
     printf("3 - Demand a fairly high minimum for the bits per row\n");
     t38_non_ecm_buffer_init(&buffer, true, 400);
@@ -298,6 +300,7 @@ int main(int argc, char *argv[])
     }
     t38_non_ecm_buffer_report_input_status(&buffer, &logging);
     t38_non_ecm_buffer_report_output_status(&buffer, &logging);
+    t38_non_ecm_buffer_release(&buffer);
 
     printf("4 - Take some time to get to the first row of the image, output ahead\n");
     t38_non_ecm_buffer_init(&buffer, true, 400);
@@ -446,6 +449,7 @@ int main(int argc, char *argv[])
     printf("    RTC output OK\n");
     t38_non_ecm_buffer_report_input_status(&buffer, &logging);
     t38_non_ecm_buffer_report_output_status(&buffer, &logging);
+    t38_non_ecm_buffer_release(&buffer);
 
     printf("5 - Take some time to get to the first row of the image, output behind\n");
     t38_non_ecm_buffer_init(&buffer, true, 400);
@@ -583,6 +587,7 @@ int main(int argc, char *argv[])
     printf("    RTC output OK\n");
     t38_non_ecm_buffer_report_input_status(&buffer, &logging);
     t38_non_ecm_buffer_report_output_status(&buffer, &logging);
+    t38_non_ecm_buffer_release(&buffer);
 
     printf("6 - TCF without leading ones\n");
     t38_non_ecm_buffer_init(&buffer, false, 400);
@@ -628,6 +633,7 @@ int main(int argc, char *argv[])
     printf("    End of data seen OK\n");
     t38_non_ecm_buffer_report_input_status(&buffer, &logging);
     t38_non_ecm_buffer_report_output_status(&buffer, &logging);
+    t38_non_ecm_buffer_release(&buffer);
 
     printf("7 - TCF with leading ones\n");
     t38_non_ecm_buffer_init(&buffer, false, 400);
@@ -695,6 +701,7 @@ int main(int argc, char *argv[])
     printf("    End of data seen OK\n");
     t38_non_ecm_buffer_report_input_status(&buffer, &logging);
     t38_non_ecm_buffer_report_output_status(&buffer, &logging);
+    t38_non_ecm_buffer_release(&buffer);
 
     printf("Tests passed\n");
     return 0;
index bfdaf80b8ed85e8b2097afa1cdabca0c94535345..d9f80da5b586899c0a287d6f9635495653862c88 100644 (file)
@@ -287,7 +287,11 @@ int main(int argc, char *argv[])
 
         for (i = 0, total_image_len = 0;  i < nstrips;  i++)
             total_image_len += TIFFRawStripSize(tif, i);
-        data = malloc(total_image_len);
+        if ((data = malloc(total_image_len)) == NULL)
+        {
+            printf("Failed to allocate buffer\n");
+            exit(2);
+        }
         for (i = 0, total_len = 0;  i < nstrips;  i++, total_len += len)
         {
             if ((len = TIFFReadRawStrip(tif, i, &data[total_len], total_image_len - total_len)) < 0)
@@ -439,7 +443,11 @@ int main(int argc, char *argv[])
         printf("total %d\n", totdata);
 
         /* Read the image into memory. */
-        data = malloc(totdata);
+        if ((data = malloc(totdata)) == NULL)
+        {
+            printf("Failed to allocate buffer\n");
+            exit(2);
+        }
         off = 0;
         for (row = 0;  row < h;  row++)
         {
@@ -561,7 +569,11 @@ int main(int argc, char *argv[])
         }
         free(data);
 #else
-        data2 = malloc(totdata);
+        if ((data2 = malloc(totdata)) == NULL)
+        {
+            printf("Failed to allocate buffer\n");
+            exit(2);
+        }
         start = rdtscll();
         //if (!t42_itulab_jpeg_to_srgb(logging, &lab_param, data2, &off, data, off, &w, &h, &samples_per_pixel))
         {
index bc9242d04466a26d53038d592b12d253d6479dc5..3df17ea7f26307120d654e1f3758faf16ac8f6c3 100644 (file)
@@ -486,8 +486,7 @@ int read_file(meta_t *meta, int page)
     if (TIFFGetField(tif, TIFFTAG_COLORMAP, &map_L, &map_a, &map_b, &map_z))
     {
         entries = 1 << meta->bits_per_sample;
-        meta->colour_map = malloc(3*entries);
-        if (meta->colour_map)
+        if ((meta->colour_map = malloc(3*entries)))
         {
 #if 0
             /* Sweep the colormap in the proper order */
@@ -1349,7 +1348,11 @@ int main(int argc, char *argv[])
             free(data);
             data = data2;
 #elif 1
-            data2 = malloc(totdata);
+            if ((data2 = malloc(totdata)) == NULL)
+            {
+                printf("Failed to allocate buffer\n");
+                exit(2);
+            }
             start = rdtscll();
             //if (!t42_itulab_jpeg_to_srgb(&logging2, &lab_param, data2, &off, data, off, &meta.image_width, &meta.image_length, &meta.samples_per_pixel))
             {
index 0e583ab059dd5420b01630d09630f3fb6636545b..476f737530613e67419a7b27460242518206d3a3 100644 (file)
@@ -412,8 +412,8 @@ int main(int argc, char *argv[])
         if (compression_step < 0)
             break;
     }
-    t4_t6_encode_release(send_state);
-    t4_t6_decode_release(receive_state);
+    t4_t6_encode_free(send_state);
+    t4_t6_decode_free(receive_state);
 #endif
     printf("Tests passed\n");
     return 0;
index 98a57cfe54543a0a7beb6a40f695d3996ce73975..4599e0c4498a88528a82f46cd603f994151fdad1 100644 (file)
@@ -454,7 +454,7 @@ int main(int argc, char *argv[])
             dump_image_as_xxx(receive_state);
         t4_rx_end_page(receive_state);
         display_page_stats(receive_state);
-        t4_rx_release(receive_state);
+        t4_rx_free(receive_state);
     }
     else
     {
@@ -621,8 +621,8 @@ int main(int argc, char *argv[])
             t4_rx_end_page(receive_state);
             sends++;
         }
-        t4_tx_release(send_state);
-        t4_rx_release(receive_state);
+        t4_tx_free(send_state);
+        t4_rx_free(receive_state);
         /* And we should now have a matching received TIFF file. Note this will only match
            at the image level. TIFF files allow a lot of ways to express the same thing,
            so bit matching of the files is not the normal case. */
index 8de5749928a2f02e8c3b181371d9d5a846afa050..84a61a5df1d6c94b84cd1cb56f1fee1ed07f70bf 100644 (file)
@@ -225,7 +225,8 @@ int main(int argc, char *argv[])
         exit(2);
     }
     printf("Test passed\n");
-
+    t81_t82_arith_encode_free(se);
+    t81_t82_arith_encode_free(sd);
     printf("Tests passed\n");
     return 0;
 }
index 8acca038c5517dca25fa4163fbcef4149eb93420..338fe30caf400cd316d072d1c4fef54989aa2e0d 100644 (file)
@@ -228,7 +228,6 @@ static int test_cycle(const char *test_id,
         if (comment  &&  testbuf_len == 1000)
             t85_encode_comment(t85_enc, comment, strlen((const char *) comment) + 1);
     }
-    t85_encode_release(t85_enc);
     printf("Encoded BIE has %lu bytes\n", (unsigned long int) testbuf_len);
     if (correct_length > 0)
     {
@@ -241,6 +240,9 @@ static int test_cycle(const char *test_id,
         printf("Test passed\n");
     }
 
+    cnt_a = t85_encode_get_compressed_image_size(t85_enc);
+    t85_encode_free(t85_enc);
+
     printf("%s.2: Decode in one big chunk\n", test_id);
     if ((decoded_image = (uint8_t *) malloc(image_size)) == NULL)
     {
@@ -254,7 +256,6 @@ static int test_cycle(const char *test_id,
     result = t85_decode_put(t85_dec, testbuf, testbuf_len);
     if (result == T4_DECODE_MORE_DATA)
         result = t85_decode_put(t85_dec, NULL, 0);
-    cnt_a = t85_encode_get_compressed_image_size(t85_enc);
     cnt_b = t85_decode_get_compressed_image_size(t85_dec);
     if (cnt_a != cnt_b  ||  cnt_a != testbuf_len*8  ||  result != T4_DECODE_OK)
     {
@@ -274,7 +275,7 @@ static int test_cycle(const char *test_id,
         exit(2);
     }
     free(decoded_image);
-    t85_decode_release(t85_dec);
+    t85_decode_free(t85_dec);
     printf("Test passed\n");
 
     printf("%s.3: Decode byte by byte\n", test_id);
@@ -316,7 +317,7 @@ static int test_cycle(const char *test_id,
         exit(2);
     }
     free(decoded_image);
-    t85_decode_release(t85_dec);
+    t85_decode_free(t85_dec);
     printf("Test passed\n");
 
     return 0;
index 3400b5f9b25dce0d532e41b04eb1210fefdce596..abd5300fdfaf242a2a2cfdeb03641cff4e84881c 100644 (file)
@@ -94,6 +94,7 @@ int main(int argc, char *argv[])
             break;
         }
     }
+    memset(&info, 0, sizeof(info));
     if ((inhandle = sf_open(in_file_name, SFM_READ, &info)) == NULL)
     {
         printf("    Cannot open audio file '%s'\n", in_file_name);
@@ -151,6 +152,7 @@ int main(int argc, char *argv[])
             count = 0;
         }
     }
+    time_scale_release(&state);
     if (sf_close(inhandle))
     {
         printf("    Cannot close audio file '%s'\n", in_file_name);
index fd62c932b95961fce8cd0b9225522e9db1ff213c..016e0096e370b56b4d3b0d3bba71f963ae9dd9f7 100644 (file)
@@ -122,6 +122,8 @@ static int periodogram_tests(void)
                 return -1;
             }
         }
+        awgn_free(noise_source_re);
+        awgn_free(noise_source_im);
     }
     return 0;
 }
index 6f1f8af4ea62cfecd556322ac4efa2a6b7d10bc3..ffa87eb3adb73621ec7f5bb818145f6d03c54096 100644 (file)
@@ -70,7 +70,6 @@ int main(int argc, char *argv[])
                              400,
                              false);
     tone_gen_init(&tone_state, &tone_desc);
-
     for (i = 0;  i < 1000;  i++)
     {
         len = tone_gen(&tone_state, amp, 160);
@@ -79,6 +78,7 @@ int main(int argc, char *argv[])
             break;
         sf_writef_short(outhandle, amp, len);
     }
+    tone_gen_release(&tone_state);
 
     /* Try a different tone pair */
     tone_gen_descriptor_init(&tone_desc,
@@ -92,7 +92,6 @@ int main(int argc, char *argv[])
                              100,
                              true);
     tone_gen_init(&tone_state, &tone_desc);
-
     for (i = 0;  i < 1000;  i++)
     {
         len = tone_gen(&tone_state, amp, 160);
@@ -101,6 +100,7 @@ int main(int argc, char *argv[])
             break;
         sf_writef_short(outhandle, amp, len);
     }
+    tone_gen_release(&tone_state);
 
     /* Try a different tone pair */
     tone_gen_descriptor_init(&tone_desc,
@@ -114,7 +114,6 @@ int main(int argc, char *argv[])
                              400,
                              true);
     tone_gen_init(&tone_state, &tone_desc);
-
     for (i = 0;  i < 1000;  i++)
     {
         len = tone_gen(&tone_state, amp, 160);
@@ -123,6 +122,7 @@ int main(int argc, char *argv[])
             break;
         sf_writef_short(outhandle, amp, len);
     }
+    tone_gen_release(&tone_state);
 
     /* Try a single tone */
     tone_gen_descriptor_init(&tone_desc,
@@ -136,7 +136,6 @@ int main(int argc, char *argv[])
                              400,
                              true);
     tone_gen_init(&tone_state, &tone_desc);
-
     for (i = 0;  i < 1000;  i++)
     {
         len = tone_gen(&tone_state, amp, 160);
@@ -145,6 +144,7 @@ int main(int argc, char *argv[])
             break;
         sf_writef_short(outhandle, amp, len);
     }
+    tone_gen_release(&tone_state);
 
     /* Try a single non-repeating tone */
     tone_gen_descriptor_init(&tone_desc,
@@ -158,7 +158,6 @@ int main(int argc, char *argv[])
                              0,
                              false);
     tone_gen_init(&tone_state, &tone_desc);
-
     for (i = 0;  i < 1000;  i++)
     {
         len = tone_gen(&tone_state, amp, 160);
@@ -167,6 +166,7 @@ int main(int argc, char *argv[])
             break;
         sf_writef_short(outhandle, amp, len);
     }
+    tone_gen_release(&tone_state);
 
     /* Try a single non-repeating tone at 0dBm0 */
     tone_gen_descriptor_init(&tone_desc,
@@ -180,7 +180,6 @@ int main(int argc, char *argv[])
                              0,
                              false);
     tone_gen_init(&tone_state, &tone_desc);
-
     for (i = 0;  i < 1000;  i++)
     {
         len = tone_gen(&tone_state, amp, 160);
@@ -189,6 +188,7 @@ int main(int argc, char *argv[])
             break;
         sf_writef_short(outhandle, amp, len);
     }
+    tone_gen_release(&tone_state);
 
     /* Try an AM modulated tone at a modest modulation level (25%) */
     tone_gen_descriptor_init(&tone_desc,
@@ -202,7 +202,6 @@ int main(int argc, char *argv[])
                              400,
                              true);
     tone_gen_init(&tone_state, &tone_desc);
-
     for (i = 0;  i < 1000;  i++)
     {
         len = tone_gen(&tone_state, amp, 160);
@@ -211,6 +210,7 @@ int main(int argc, char *argv[])
             break;
         sf_writef_short(outhandle, amp, len);
     }
+    tone_gen_release(&tone_state);
 
     /* Try an AM modulated tone at maximum modulation level (100%) */
     tone_gen_descriptor_init(&tone_desc,
@@ -224,7 +224,6 @@ int main(int argc, char *argv[])
                              400,
                              true);
     tone_gen_init(&tone_state, &tone_desc);
-
     for (i = 0;  i < 1000;  i++)
     {
         len = tone_gen(&tone_state, amp, 160);
@@ -233,6 +232,7 @@ int main(int argc, char *argv[])
             break;
         sf_writef_short(outhandle, amp, len);
     }
+    tone_gen_release(&tone_state);
 
     if (sf_close_telephony(outhandle))
     {
index f383eb8f47f1e80afe615a9888a15e4e8d65bb20..a7c02a6b86edaba96c44bfe509aaaa204b6d1efc 100644 (file)
@@ -94,6 +94,8 @@ char next_tx_file[1000];
 
 static int next_step(faxtester_state_t *s);
 
+static bool test_for_call_drop = false;
+
 static int phase_b_handler(void *user_data, int result)
 {
     int ch;
@@ -641,6 +643,7 @@ static int next_step(faxtester_state_t *s)
     t4_tx_state_t t4_tx_state;
     t30_state_t *t30;
 
+    test_for_call_drop = false;
     if (s->cur == NULL)
     {
         if (!s->final_delayed)
@@ -798,6 +801,11 @@ static int next_step(faxtester_state_t *s)
         {
             faxtest_set_rx_silence(s);
         }
+        else if (strcasecmp((const char *) type, "DROPCALL") == 0)
+        {
+            span_log(&s->logging, SPAN_LOG_FLOW, "Far end should drop the call\n");
+            test_for_call_drop = true;
+        }
         else
         {
             span_log(&s->logging, SPAN_LOG_FLOW, "Unrecognised type '%s'\n", (const char *) type);
@@ -1109,6 +1117,11 @@ static int next_step(faxtester_state_t *s)
             span_log(&s->logging, SPAN_LOG_FLOW, "ECM image is %d bytes (min row bits %d)\n", len, min_row_bits);
             faxtester_set_ecm_image_buffer(s, image, len, ecm_block, ecm_frame_size, i);
         }
+        else if (strcasecmp((const char *) type, "DROPCALL") == 0)
+        {
+            span_log(&s->logging, SPAN_LOG_FLOW, "Time to drop the call\n");
+            return 0;
+        }
         else
         {
             span_log(&s->logging, SPAN_LOG_FLOW, "Unrecognised type '%s'\n", (const char *) type);
@@ -1198,6 +1211,16 @@ static void exchange(faxtester_state_t *s)
             /*endif*/
         }
         /*endif*/
+        if (test_for_call_drop)
+        {
+            if (!t30_call_active(fax_get_t30_state(fax)))
+            {
+                printf("Call dropped\n");
+                //break;
+            }
+            /*endif*/
+        }
+        /*endif*/
     }
     /*endfor*/
     if (log_audio)
@@ -1391,6 +1414,7 @@ int main(int argc, char *argv[])
     span_log_set_level(&state.logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_SHOW_TAG | SPAN_LOG_SHOW_SAMPLE_TIME | SPAN_LOG_FLOW);
     span_log_set_tag(&state.logging, "B");
     get_test_set(&state, xml_file_name, test_name);
+    faxtester_release(&state);
     printf("Done\n");
     return 0;
 }
index 8ceb12060ecc8ea5d94855edb4fa4fa3a8d2f057..4ef9f7306fc8f090d8ca7493674aa8fb05cbfa33 100644 (file)
@@ -535,7 +535,7 @@ int main(int argc, char *argv[])
                 //rx.eq_put_step = rand()%(192*10/3);
                 bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20);
                 bert_set_report(&bert, 10000, reporter, NULL);
-                one_way_line_model_release(line_model);
+                one_way_line_model_free(line_model);
                 if ((line_model = one_way_line_model_init(line_model_no, (float) noise_level, channel_codec, 0)) == NULL)
                 {
                     fprintf(stderr, "    Failed to create line model\n");
@@ -565,7 +565,7 @@ int main(int argc, char *argv[])
         fprintf(stderr, "At completion:\n");
         fprintf(stderr, "Final result %ddBm0/%ddBm0, %d bits, %d bad bits, %d resyncs\n", signal_level, noise_level, bert_results.total_bits, bert_results.bad_bits, bert_results.resyncs);
         fprintf(stderr, "Last report  %ddBm0/%ddBm0, %d bits, %d bad bits, %d resyncs\n", signal_level, noise_level, latest_results.total_bits, latest_results.bad_bits, latest_results.resyncs);
-        one_way_line_model_release(line_model);
+        one_way_line_model_free(line_model);
 
         if (signal_level > -43)
         {
@@ -575,6 +575,9 @@ int main(int argc, char *argv[])
 
         printf("Tests passed.\n");
     }
+    v17_rx_free(rx);
+    if (tx)
+        v17_tx_free(tx);
 #if defined(ENABLE_GUI)
     if (use_gui)
         qam_wait_to_end(qam_monitor);
index 3729687c35aefed8492a40e133e791b6c9c085f3..d42b2f4f4da36c215bf9f0c787774401a0557dc6 100644 (file)
@@ -455,6 +455,7 @@ int main(int argc, char *argv[])
             }
         }
     }
+    both_ways_line_model_free(model);
 #if defined(ENABLE_GUI)
     if (use_gui)
         qam_wait_to_end(endpoint[0].qam_monitor);
index 671fd935affad9547fcd5a00589a7ff61efbff16..edac945aa3085c6050e16c011ac92247aeac03e2 100644 (file)
@@ -540,7 +540,7 @@ int main(int argc, char *argv[])
                 v27ter_rx_restart(rx, test_bps, false);
                 bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20);
                 bert_set_report(&bert, 10000, reporter, NULL);
-                one_way_line_model_release(line_model);
+                one_way_line_model_free(line_model);
                 if ((line_model = one_way_line_model_init(line_model_no, (float) noise_level, channel_codec, 0)) == NULL)
                 {
                     fprintf(stderr, "    Failed to create line model\n");
@@ -571,7 +571,8 @@ int main(int argc, char *argv[])
         fprintf(stderr, "At completion:\n");
         fprintf(stderr, "Final result %ddBm0/%ddBm0, %d bits, %d bad bits, %d resyncs\n", signal_level, noise_level, bert_results.total_bits, bert_results.bad_bits, bert_results.resyncs);
         fprintf(stderr, "Last report  %ddBm0/%ddBm0, %d bits, %d bad bits, %d resyncs\n", signal_level, noise_level, latest_results.total_bits, latest_results.bad_bits, latest_results.resyncs);
-        one_way_line_model_release(line_model);
+        one_way_line_model_free(line_model);
+
         if (signal_level > -43)
         {
             printf("Tests failed.\n");
@@ -580,6 +581,10 @@ int main(int argc, char *argv[])
 
         printf("Tests passed.\n");
     }
+    v27ter_rx_free(rx);
+    if (tx)
+        v27ter_tx_free(tx);
+    bert_release(&bert);
 #if defined(ENABLE_GUI)
     if (use_gui)
         qam_wait_to_end(qam_monitor);
index ec678c148a55c2381cb0b16c2657f838ded37104..946170cb5dab97018fa8224a0a5d75f30c71cd41 100644 (file)
@@ -520,7 +520,7 @@ int main(int argc, char *argv[])
 #endif
                 bert_init(&bert, bits_per_test, BERT_PATTERN_ITU_O152_11, test_bps, 20);
                 bert_set_report(&bert, 10000, reporter, NULL);
-                one_way_line_model_release(line_model);
+                one_way_line_model_free(line_model);
                 if ((line_model = one_way_line_model_init(line_model_no, (float) noise_level, channel_codec, 0)) == NULL)
                 {
                     fprintf(stderr, "    Failed to create line model\n");
@@ -550,7 +550,7 @@ int main(int argc, char *argv[])
         fprintf(stderr, "At completion:\n");
         fprintf(stderr, "Final result %ddBm0/%ddBm0, %d bits, %d bad bits, %d resyncs\n", signal_level, noise_level, bert_results.total_bits, bert_results.bad_bits, bert_results.resyncs);
         fprintf(stderr, "Last report  %ddBm0/%ddBm0, %d bits, %d bad bits, %d resyncs\n", signal_level, noise_level, latest_results.total_bits, latest_results.bad_bits, latest_results.resyncs);
-        one_way_line_model_release(line_model);
+        one_way_line_model_free(line_model);
 
         if (signal_level > -43)
         {
@@ -560,6 +560,10 @@ int main(int argc, char *argv[])
 
         printf("Tests passed.\n");
     }
+    v29_rx_free(rx);
+    if (tx)
+        v29_tx_free(tx);
+    bert_release(&bert);
 #if defined(ENABLE_GUI)
     if (use_gui)
         qam_wait_to_end(qam_monitor);