Added special strdup to liboptions, to prevent memory leaks for option strings
If you are doing memory leak debugging you don't want to see any leaks when stopping the program.
This commit is contained in:
@@ -175,13 +175,13 @@ int sdr_config_handle_options(int short_option, int argi, char **argv)
|
||||
sdr_config->channel = atoi(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_DEVICE_ARGS:
|
||||
sdr_config->device_args = strdup(argv[argi]);
|
||||
sdr_config->device_args = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_STREAM_ARGS:
|
||||
sdr_config->stream_args = strdup(argv[argi]);
|
||||
sdr_config->stream_args = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_TUNE_ARGS:
|
||||
sdr_config->tune_args = strdup(argv[argi]);
|
||||
sdr_config->tune_args = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_SAMPLERATE:
|
||||
sdr_config->samplerate = atoi(argv[argi]);
|
||||
@@ -193,13 +193,13 @@ int sdr_config_handle_options(int short_option, int argi, char **argv)
|
||||
sdr_config->bandwidth = atof(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_RX_ANTENNA:
|
||||
sdr_config->rx_antenna = strdup(argv[argi]);
|
||||
sdr_config->rx_antenna = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_TX_ANTENNA:
|
||||
sdr_config->tx_antenna = strdup(argv[argi]);
|
||||
sdr_config->tx_antenna = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_CLOCK_SOURCE:
|
||||
sdr_config->clock_source = strdup(argv[argi]);
|
||||
sdr_config->clock_source = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_RX_GAIN:
|
||||
sdr_config->rx_gain = atof(argv[argi]);
|
||||
@@ -208,16 +208,16 @@ int sdr_config_handle_options(int short_option, int argi, char **argv)
|
||||
sdr_config->tx_gain = atof(argv[argi]);
|
||||
break;
|
||||
case OPT_WRITE_IQ_RX_WAVE:
|
||||
sdr_config->write_iq_rx_wave = strdup(argv[argi]);
|
||||
sdr_config->write_iq_rx_wave = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_WRITE_IQ_TX_WAVE:
|
||||
sdr_config->write_iq_tx_wave = strdup(argv[argi]);
|
||||
sdr_config->write_iq_tx_wave = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_READ_IQ_RX_WAVE:
|
||||
sdr_config->read_iq_rx_wave = strdup(argv[argi]);
|
||||
sdr_config->read_iq_rx_wave = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_READ_IQ_TX_WAVE:
|
||||
sdr_config->read_iq_tx_wave = strdup(argv[argi]);
|
||||
sdr_config->read_iq_tx_wave = options_strdup(argv[argi]);
|
||||
break;
|
||||
case OPT_SDR_SWAP_LINKS:
|
||||
sdr_config->swap_links = 1;
|
||||
|
@@ -27,6 +27,7 @@
|
||||
#include <SoapySDR/Formats.h>
|
||||
#include "soapy.h"
|
||||
#include "../libdebug/debug.h"
|
||||
#include "../liboptions/options.h"
|
||||
|
||||
extern int sdr_rx_overflow;
|
||||
|
||||
@@ -40,7 +41,7 @@ static uint64_t tx_count = 0;
|
||||
|
||||
static int parse_args(SoapySDRKwargs *args, const char *_args_string)
|
||||
{
|
||||
char *args_string = strdup(_args_string), *key, *val;
|
||||
char *args_string = options_strdup(_args_string), *key, *val;
|
||||
|
||||
memset(args, 0, sizeof(*args));
|
||||
while (args_string && *args_string) {
|
||||
|
@@ -26,6 +26,7 @@
|
||||
#include <uhd/usrp/usrp.h>
|
||||
#include "uhd.h"
|
||||
#include "../libdebug/debug.h"
|
||||
#include "../liboptions/options.h"
|
||||
|
||||
/* use to TX time stamp */
|
||||
//#define TX_TIMESTAMP
|
||||
@@ -246,7 +247,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
||||
} else
|
||||
tune_request.rf_freq_policy = UHD_TUNE_REQUEST_POLICY_AUTO;
|
||||
tune_request.dsp_freq_policy = UHD_TUNE_REQUEST_POLICY_AUTO;
|
||||
tune_request.args = strdup(_tune_args);
|
||||
tune_request.args = options_strdup(_tune_args);
|
||||
error = uhd_usrp_set_tx_freq(usrp, &tune_request, channel, &tune_result);
|
||||
if (error) {
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to set TX frequency to %.0f Hz\n", tx_frequency);
|
||||
@@ -291,7 +292,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
||||
memset(&stream_args, 0, sizeof(stream_args));
|
||||
stream_args.cpu_format = "fc32";
|
||||
stream_args.otw_format = "sc16";
|
||||
stream_args.args = strdup(_stream_args);
|
||||
stream_args.args = options_strdup(_stream_args);
|
||||
stream_args.channel_list = &channel;
|
||||
stream_args.n_channels = 1;
|
||||
error = uhd_usrp_get_tx_stream(usrp, &stream_args, tx_streamer);
|
||||
@@ -434,7 +435,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
||||
} else
|
||||
tune_request.rf_freq_policy = UHD_TUNE_REQUEST_POLICY_AUTO;
|
||||
tune_request.dsp_freq_policy = UHD_TUNE_REQUEST_POLICY_AUTO;
|
||||
tune_request.args = strdup(_tune_args);
|
||||
tune_request.args = options_strdup(_tune_args);
|
||||
error = uhd_usrp_set_rx_freq(usrp, &tune_request, channel, &tune_result);
|
||||
if (error) {
|
||||
PDEBUG(DUHD, DEBUG_ERROR, "Failed to set RX frequency to %.0f Hz\n", rx_frequency);
|
||||
@@ -479,7 +480,7 @@ int uhd_open(size_t channel, const char *_device_args, const char *_stream_args,
|
||||
memset(&stream_args, 0, sizeof(stream_args));
|
||||
stream_args.cpu_format = "fc32";
|
||||
stream_args.otw_format = "sc16";
|
||||
stream_args.args = strdup(_stream_args);
|
||||
stream_args.args = options_strdup(_stream_args);
|
||||
stream_args.channel_list = &channel;
|
||||
stream_args.n_channels = 1;
|
||||
error = uhd_usrp_get_rx_stream(usrp, &stream_args, rx_streamer);
|
||||
|
Reference in New Issue
Block a user