]> sigrok.org Git - libsigrok.git/commitdiff
Use g_malloc0() consistently, simplify error handling.
authorUwe Hermann <redacted>
Fri, 21 Nov 2014 18:02:10 +0000 (19:02 +0100)
committerUwe Hermann <redacted>
Sat, 22 Nov 2014 16:02:57 +0000 (17:02 +0100)
Use g_malloc0() for small allocations and assume they always
succeed. Simplify error handling in a few places accordingly.

Don't always sanity-check parameters for non-public (SR_PRIV)
functions, we require the developers to invoke them correctly.
This allows further error handling simplifications.

31 files changed:
src/backend.c
src/device.c
src/hardware/agilent-dmm/api.c
src/hardware/appa-55ii/api.c
src/hardware/atten-pps3xxx/api.c
src/hardware/brymen-dmm/api.c
src/hardware/cem-dt-885x/api.c
src/hardware/center-3xx/api.c
src/hardware/colead-slm/api.c
src/hardware/conrad-digi-35-cpu/api.c
src/hardware/fluke-dmm/api.c
src/hardware/gmc-mh-1x-2x/api.c
src/hardware/link-mso19/api.c
src/hardware/manson-hcs-3xxx/api.c
src/hardware/mic-985xx/api.c
src/hardware/motech-lps-30x/api.c
src/hardware/norma-dmm/api.c
src/hardware/openbench-logic-sniffer/api.c
src/hardware/serial-dmm/api.c
src/hardware/teleinfo/api.c
src/hardware/tondaj-sl-814/api.c
src/hardware/victor-dmm/api.c
src/hwdriver.c
src/lcr/es51919.c
src/output/analog.c
src/output/ols.c
src/scpi/scpi.c
src/scpi/scpi_serial.c
src/session.c
src/std.c
src/strutil.c

index 6500bf54d484446582a6be9b6366d85d9be909f4..637f7de99aaf3dbfc4696b6894c39f94095821d1 100644 (file)
@@ -348,12 +348,7 @@ SR_API int sr_init(struct sr_context **ctx)
        }
 
        /* + 1 to handle when struct sr_context has no members. */
-       context = g_try_malloc0(sizeof(struct sr_context) + 1);
-
-       if (!context) {
-               ret = SR_ERR_MALLOC;
-               goto done;
-       }
+       context = g_malloc0(sizeof(struct sr_context) + 1);
 
 #ifdef HAVE_LIBUSB_1_0
        ret = libusb_init(&context->libusb_ctx);
index 1945f01a9fb4a2ad0b8c5989677abc46bab6cf58..9dd2201e528b05a0848a4cf0e34135dd7232fde9 100644 (file)
@@ -281,7 +281,6 @@ SR_PRIV void sr_dev_inst_free(struct sr_dev_inst *sdi)
  *  @param[in]  address @copydoc sr_usb_dev_inst::address
  *  @param[in]  hdl @copydoc sr_usb_dev_inst::devhdl
  *
- *  @retval NULL Error
  *  @retval other struct sr_usb_dev_inst * for USB device instance.
  */
 SR_PRIV struct sr_usb_dev_inst *sr_usb_dev_inst_new(uint8_t bus,
@@ -289,11 +288,7 @@ SR_PRIV struct sr_usb_dev_inst *sr_usb_dev_inst_new(uint8_t bus,
 {
        struct sr_usb_dev_inst *udi;
 
-       if (!(udi = g_try_malloc(sizeof(struct sr_usb_dev_inst)))) {
-               sr_err("USB device instance malloc failed.");
-               return NULL;
-       }
-
+       udi = g_malloc0(sizeof(struct sr_usb_dev_inst));
        udi->bus = bus;
        udi->address = address;
        udi->devhdl = hdl;
@@ -322,10 +317,11 @@ SR_PRIV void sr_usb_dev_inst_free(struct sr_usb_dev_inst *usb)
  *
  * @param[in] port OS-specific serial port specification. Examples:
  *                 "/dev/ttyUSB0", "/dev/ttyACM1", "/dev/tty.Modem-0", "COM1".
+ *                 Must not be NULL.
  * @param[in] serialcomm A serial communication parameters string, in the form
  *              of \<speed\>/\<data bits\>\<parity\>\<stopbits\>, for example
  *              "9600/8n1" or "600/7o2". This is an optional parameter;
- *              it may be filled in later.
+ *              it may be filled in later. Can be NULL.
  *
  * @return A pointer to a newly initialized struct sr_serial_dev_inst,
  *         or NULL on error.
@@ -335,16 +331,7 @@ SR_PRIV struct sr_serial_dev_inst *sr_serial_dev_inst_new(const char *port,
 {
        struct sr_serial_dev_inst *serial;
 
-       if (!port) {
-               sr_err("Serial port required.");
-               return NULL;
-       }
-
-       if (!(serial = g_try_malloc0(sizeof(struct sr_serial_dev_inst)))) {
-               sr_err("Serial device instance malloc failed.");
-               return NULL;
-       }
-
+       serial = g_malloc0(sizeof(struct sr_serial_dev_inst));
        serial->port = g_strdup(port);
        if (serialcomm)
                serial->serialcomm = g_strdup(serialcomm);
@@ -369,16 +356,7 @@ SR_PRIV struct sr_usbtmc_dev_inst *sr_usbtmc_dev_inst_new(const char *device)
 {
        struct sr_usbtmc_dev_inst *usbtmc;
 
-       if (!device) {
-               sr_err("Device name required.");
-               return NULL;
-       }
-
-       if (!(usbtmc = g_try_malloc0(sizeof(struct sr_usbtmc_dev_inst)))) {
-               sr_err("USBTMC device instance malloc failed.");
-               return NULL;
-       }
-
+       usbtmc = g_malloc0(sizeof(struct sr_usbtmc_dev_inst));
        usbtmc->device = g_strdup(device);
        usbtmc->fd = -1;
 
index eb723bfad045177137c43ccfe75ef069b6b662c5..374c206a8a6de90eef5f0099ce9e6424b8c5e929 100644 (file)
@@ -112,8 +112,7 @@ static GSList *scan(GSList *options)
        if (!serialcomm)
                serialcomm = SERIALCOMM;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index c36e72c8217896fa8fc94da3f7f5e31a8787b07c..771a686c44d5d98837744708db6e8721e756f05a 100644 (file)
@@ -81,8 +81,8 @@ static GSList *scan(GSList *options)
        if (!serialcomm)
                serialcomm = "9600/8n1";
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
+
        if (serial_open(serial, SERIAL_RDONLY) != SR_OK)
                return NULL;
 
index 580bc51d4632edb4e947a9033530d4e3729a290c..b72eeb4a59107aff7b415438e23efeb0c904dd71 100644 (file)
@@ -122,11 +122,11 @@ static GSList *scan(GSList *options, int modelid)
        if (!serialcomm)
                serialcomm = SERIALCOMM;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
+
        serial_flush(serial);
 
        /* This is how the vendor software scans for hardware. */
index 797d05a94a8f942775c88deaa6205285d99cf7e1..aef784e8ca314396e6ac7b08fc2291f5a069c58a 100644 (file)
@@ -51,8 +51,7 @@ static GSList *brymen_scan(const char *conn, const char *serialcomm)
        uint8_t buf[128];
        size_t len;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index 29db2451bde727a1456df44a901f7c3f5d0b7943..d91c5509b1f55fa908adb1377aad0637313b4e01 100644 (file)
@@ -97,8 +97,7 @@ static GSList *scan(GSList *options)
        if (!conn)
                return NULL;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, SERIALCOMM)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, SERIALCOMM);
 
        if (serial_open(serial, SERIAL_RDONLY) != SR_OK)
                return NULL;
@@ -119,10 +118,7 @@ static GSList *scan(GSList *options)
                        devc->cur_meas_range = 0;
                        devc->cur_data_source = DATA_SOURCE_LIVE;
                        devc->enable_data_source_memory = FALSE;
-
-                       if (!(sdi->conn = sr_serial_dev_inst_new(conn, SERIALCOMM)))
-                               return NULL;
-
+                       sdi->conn = sr_serial_dev_inst_new(conn, SERIALCOMM);
                        sdi->inst_type = SR_INST_SERIAL;
                        sdi->priv = devc;
                        sdi->driver = di;
index 25df2eb040a2bcd040c0f78744fba16c525224d3..c4008d485e9c58fc79d7504f0e809ebdf01e57a2 100644 (file)
@@ -76,8 +76,7 @@ static GSList *center_scan(const char *conn, const char *serialcomm, int idx)
        struct sr_serial_dev_inst *serial;
        GSList *devices;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index 4c35f0fbc1b831ff27f5f76b0ee3aa697b93ba69..34bebd8e6484227438d1996c80222fc1fdaebdbb 100644 (file)
@@ -87,8 +87,7 @@ static GSList *scan(GSList *options)
        sdi->vendor = g_strdup("Colead");
        sdi->model = g_strdup("SL-5868P");
        devc = g_malloc0(sizeof(struct dev_context));
-       if (!(sdi->conn = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       sdi->conn = sr_serial_dev_inst_new(conn, serialcomm);
        sdi->inst_type = SR_INST_SERIAL;
        sdi->priv = devc;
        sdi->driver = di;
index 7f061fbbfc82599e52730208a702187c7b510d9a..ed7378ee596e5a9f786102cd90e5e75c0c528a84 100644 (file)
@@ -83,8 +83,7 @@ static GSList *scan(GSList *options)
         * the device is there.
         */
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index fc3355c2f28a4eb6339e10b25ac2b6237053fc47..e590a4cc8aff6cb4fc4e7a1c014c7c2870e34705 100644 (file)
@@ -75,8 +75,7 @@ static GSList *fluke_scan(const char *conn, const char *serialcomm)
        int retry, len, i, s;
        char buf[128], *b, **tokens;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index 8e7d2c1b961f106440c8fae4a1a9706173f73721..91267d98c3e2df3580ceb6ea9b30f0901df84e68 100644 (file)
@@ -195,8 +195,7 @@ static GSList *scan_1x_2x_rs232(GSList *options)
        if (!serialcomm)
                serialcomm = SERIALCOMM_2X_RS232;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK) {
                sr_serial_dev_inst_free(serial);
@@ -288,8 +287,7 @@ static GSList *scan_2x_bd232(GSList *options)
        if (!serialcomm)
                serialcomm = SERIALCOMM_2X;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                goto exit_err;
index 46270ffeb7fed89836e65cd3d295f8f6123b33d8..451cc9347a163d94e8f13196f866aee77cf2a610 100644 (file)
@@ -195,10 +195,7 @@ static GSList *scan(GSList *options)
                        devc->protocol_trigger.mask[i] = 0xff;
                }
 
-               if (!(devc->serial = sr_serial_dev_inst_new(conn, serialcomm))) {
-                       g_free(devc);
-                       return devices;
-               }
+               devc->serial = sr_serial_dev_inst_new(conn, serialcomm);
 
                struct sr_dev_inst *sdi = g_malloc0(sizeof(struct sr_dev_inst));
                sdi->status = SR_ST_INACTIVE;
index 6355d004fc2eb2565f19d2d27a5923d142b4bf5b..5f51b82cd86d177d3bcadeaab3fdc075597e95d0 100644 (file)
@@ -125,8 +125,7 @@ static GSList *scan(GSList *options)
        if (!serialcomm)
                serialcomm = "9600/8n1";
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index 6e834bd4b23d866a3f3e8ce3c19ec37bf8d55447..3bc65faa6c1fa086d60f231ead05555c62fb296b 100644 (file)
@@ -75,8 +75,7 @@ static GSList *mic_scan(const char *conn, const char *serialcomm, int idx)
        struct sr_serial_dev_inst *serial;
        GSList *devices;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index 9c01ea455077ac8041a75909bba6c59d1e0b846e..f118ebe33bb7593eae4e6d313800527008232122 100644 (file)
@@ -402,8 +402,7 @@ static GSList *do_scan(lps_modelid modelid, struct sr_dev_driver *drv, GSList *o
                serialcomm = SERIALCOMM;
 
        /* Init serial port. */
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                goto exit_err;
index 34d7de145e58af9a7804c993b819fb8b3f13e583..83e11351060bff50bce99157b9a582e75f1359a2 100644 (file)
@@ -112,8 +112,7 @@ static GSList *do_scan(struct sr_dev_driver* drv, GSList *options)
        if (!serialcomm)
                serialcomm = SERIALCOMM;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index cb55bf19a6f891b0cc3abe24c4bbf8c4f7215cec..acbb971823846f326d72c7880765562da55ade70 100644 (file)
@@ -128,8 +128,7 @@ static GSList *scan(GSList *options)
        if (serialcomm == NULL)
                serialcomm = SERIALCOMM;
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        /* The discovery procedure is like this: first send the Reset
         * command (0x00) 5 times, since the device could be anywhere
index f240266f1a0d3eccf91f301c088b32626dde31b7..8a0d12ce87e29c4104f7f983eff875b3595487c2 100644 (file)
@@ -409,8 +409,7 @@ static GSList *sdmm_scan(const char *conn, const char *serialcomm, int dmm)
        size_t len;
        uint8_t buf[128];
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index 6089f3a5a918ac46b4cb65ac05de60f087772641..5e1dfba1acd4b8692d6edac5730906f86a8d9dd4 100644 (file)
@@ -74,8 +74,8 @@ static GSList *scan(GSList *options)
        if (!serialcomm)
                serialcomm = "1200/7e1";
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
+
        if (serial_open(serial, SERIAL_RDONLY) != SR_OK)
                return NULL;
 
index 1b40b9f6f593d23d280517f070a7fd5bbf1d6d8d..2ea66ebf59be08f444e1d3469ca49b927c3201ee 100644 (file)
@@ -90,8 +90,7 @@ static GSList *scan(GSList *options)
        sdi->model = g_strdup("SL-814");
        devc = g_malloc0(sizeof(struct dev_context));
 
-       if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
-               return NULL;
+       serial = sr_serial_dev_inst_new(conn, serialcomm);
 
        if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                return NULL;
index de7e94b2fac8f3acef8f6d1bf35d657779a6ddb6..f2e3d783bb4e816c81667e2434a197dccbe1a840 100644 (file)
@@ -95,9 +95,8 @@ static GSList *scan(GSList *options)
                ch = sr_channel_new(0, SR_CHANNEL_ANALOG, TRUE, "P1");
                sdi->channels = g_slist_append(NULL, ch);
 
-               if (!(sdi->conn = sr_usb_dev_inst_new(libusb_get_bus_number(devlist[i]),
-                               libusb_get_device_address(devlist[i]), NULL)))
-                       return NULL;
+               sdi->conn = sr_usb_dev_inst_new(libusb_get_bus_number(devlist[i]),
+                               libusb_get_device_address(devlist[i]), NULL);
                sdi->inst_type = SR_INST_USB;
 
                drvc->instances = g_slist_append(drvc->instances, sdi);
index 13be087aedb3391d35571e63ecc52304ac678523..ca579f6741780fa2464aab37d3c462bc9eafb836 100644 (file)
@@ -395,8 +395,7 @@ SR_PRIV struct sr_config *sr_config_new(uint32_t key, GVariant *data)
 {
        struct sr_config *src;
 
-       if (!(src = g_try_malloc(sizeof(struct sr_config))))
-               return NULL;
+       src = g_malloc0(sizeof(struct sr_config));
        src->key = key;
        src->data = g_variant_ref_sink(data);
 
index 0c9054a8670467c6e8476fa9fd0caa1e0b85bc36..55ea66271a4a502ac82e896e395b6d30ab2a6274 100644 (file)
@@ -41,11 +41,7 @@ static struct dev_buffer *dev_buffer_new(size_t size)
 {
        struct dev_buffer *dbuf;
 
-       if (!(dbuf = g_try_malloc(sizeof(struct dev_buffer) + size))) {
-               sr_err("Dev buffer malloc failed (size=%zu).", size);
-               return NULL;
-       }
-
+       dbuf = g_malloc0(sizeof(struct dev_buffer) + size);
        dbuf->size = size;
        dbuf->len = 0;
        dbuf->offset = 0;
@@ -846,13 +842,9 @@ SR_PRIV struct sr_dev_inst *es51919_serial_scan(GSList *options,
        sdi->vendor = g_strdup(vendor);
        sdi->model = g_strdup(model);
        devc = g_malloc0(sizeof(struct dev_context));
-
-       if (!(devc->buf = dev_buffer_new(PACKET_SIZE * 8)))
-               goto scan_cleanup;
-
+       devc->buf = dev_buffer_new(PACKET_SIZE * 8);
        sdi->inst_type = SR_INST_SERIAL;
        sdi->conn = serial;
-
        sdi->priv = devc;
 
        if (setup_channels(sdi) != SR_OK)
index 77cf8b1074755f0888417d221a3e7e5dc10ee35c..e99c3c00c22794633d34c006abb477b86b5cf20f 100644 (file)
@@ -47,7 +47,7 @@ static int init(struct sr_output *o, GHashTable *options)
        if (!o || !o->sdi)
                return SR_ERR_ARG;
 
-       o->priv = ctx = g_try_malloc0(sizeof(struct context));
+       o->priv = ctx = g_malloc0(sizeof(struct context));
        s = g_variant_get_string(g_hash_table_lookup(options, "digits"), NULL);
        if (!strcmp(s, "all"))
                ctx->digits = DIGITS_ALL;
index 8d68bdaf91e728639bd560c6c0474fb6fe51a280..7feb4db96cad4c6f5ffcb8c2ef78a8a9575013b4 100644 (file)
@@ -44,12 +44,8 @@ static int init(struct sr_output *o, GHashTable *options)
 
        (void)options;
 
-       if (!(ctx = g_try_malloc(sizeof(struct context)))) {
-               sr_err("%s: ctx malloc failed", __func__);
-               return SR_ERR_MALLOC;
-       }
+       ctx = g_malloc0(sizeof(struct context));
        o->priv = ctx;
-
        ctx->samplerate = 0;
        ctx->num_samples = 0;
 
index bb7099786d2c21b9bc2c8170bc47cf45fb9dc8d2..7604411384a9fcec385cffad37ec9b18673c37c7 100644 (file)
@@ -742,12 +742,7 @@ SR_PRIV int sr_scpi_get_hw_id(struct sr_scpi_dev_inst *scpi,
        }
        g_free(response);
 
-       hw_info = g_try_malloc(sizeof(struct sr_scpi_hw_info));
-       if (!hw_info) {
-               g_strfreev(tokens);
-               return SR_ERR_MALLOC;
-       }
-
+       hw_info = g_malloc0(sizeof(struct sr_scpi_hw_info));
        hw_info->manufacturer = g_strdup(tokens[0]);
        hw_info->model = g_strdup(tokens[1]);
        hw_info->serial_number = g_strdup(tokens[2]);
index 4f6e067887c9135298b6512837cdf9f4abb33d09..650f9711c386cf24a11d031c422847c895dea66f 100644 (file)
@@ -79,8 +79,7 @@ static int scpi_serial_dev_inst_new(void *priv, struct drv_context *drvc,
        (void)drvc;
        (void)params;
 
-       if (!(sscpi->serial = sr_serial_dev_inst_new(resource, serialcomm)))
-               return SR_ERR;
+       sscpi->serial = sr_serial_dev_inst_new(resource, serialcomm);
 
        return SR_OK;
 }
index 16bd2ab3c4ec5e6f9bf471bdb8d52038a691c41c..f325e78b4e6b6ee9c504f66c0433e2f0d4dfc6a0 100644 (file)
@@ -306,9 +306,7 @@ SR_API int sr_session_datafeed_callback_add(struct sr_session *session,
                return SR_ERR_ARG;
        }
 
-       if (!(cb_struct = g_try_malloc0(sizeof(struct datafeed_callback))))
-               return SR_ERR_MALLOC;
-
+       cb_struct = g_malloc0(sizeof(struct datafeed_callback));
        cb_struct->cb = cb;
        cb_struct->cb_data = cb_data;
 
@@ -712,7 +710,6 @@ SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi,
  *
  * @retval SR_OK Success.
  * @retval SR_ERR_ARG Invalid argument.
- * @retval SR_ERR_MALLOC Memory allocation error.
  */
 static int _sr_session_source_add(struct sr_session *session, GPollFD *pollfd,
                int timeout, sr_receive_data_callback cb, void *cb_data, gintptr poll_object)
@@ -727,19 +724,10 @@ static int _sr_session_source_add(struct sr_session *session, GPollFD *pollfd,
 
        /* Note: cb_data can be NULL, that's not a bug. */
 
-       new_pollfds = g_try_realloc(session->pollfds,
+       new_pollfds = g_realloc(session->pollfds,
                        sizeof(GPollFD) * (session->num_sources + 1));
-       if (!new_pollfds) {
-               sr_err("%s: new_pollfds malloc failed", __func__);
-               return SR_ERR_MALLOC;
-       }
-
-       new_sources = g_try_realloc(session->sources, sizeof(struct source) *
+       new_sources = g_realloc(session->sources, sizeof(struct source) *
                        (session->num_sources + 1));
-       if (!new_sources) {
-               sr_err("%s: new_sources malloc failed", __func__);
-               return SR_ERR_MALLOC;
-       }
 
        new_pollfds[session->num_sources] = *pollfd;
        s = &new_sources[session->num_sources++];
@@ -769,7 +757,6 @@ static int _sr_session_source_add(struct sr_session *session, GPollFD *pollfd,
  *
  * @retval SR_OK Success.
  * @retval SR_ERR_ARG Invalid argument.
- * @retval SR_ERR_MALLOC Memory allocation error.
  *
  * @since 0.3.0
  */
@@ -795,7 +782,6 @@ SR_API int sr_session_source_add(struct sr_session *session, int fd,
  *
  * @retval SR_OK Success.
  * @retval SR_ERR_ARG Invalid argument.
- * @retval SR_ERR_MALLOC Memory allocation error.
  *
  * @since 0.3.0
  */
@@ -819,7 +805,6 @@ SR_API int sr_session_source_add_pollfd(struct sr_session *session,
  *
  * @retval SR_OK Success.
  * @retval SR_ERR_ARG Invalid argument.
- * @retval SR_ERR_MALLOC Memory allocation error.
  *
  * @since 0.3.0
  */
@@ -842,20 +827,15 @@ SR_API int sr_session_source_add_channel(struct sr_session *session,
 /**
  * Remove the source belonging to the specified channel.
  *
- * @todo Add more error checks and logging.
- *
  * @param session The session to use. Must not be NULL.
  * @param poll_object The channel for which the source should be removed.
  *
  * @retval SR_OK Success
  * @retval SR_ERR_ARG Invalid arguments
- * @retval SR_ERR_MALLOC Memory allocation error
  * @retval SR_ERR_BUG Internal error
  */
 static int _sr_session_source_remove(struct sr_session *session, gintptr poll_object)
 {
-       struct source *new_sources;
-       GPollFD *new_pollfds;
        unsigned int old;
 
        if (!session->sources || !session->num_sources) {
@@ -872,29 +852,17 @@ static int _sr_session_source_remove(struct sr_session *session, gintptr poll_ob
        if (old == session->num_sources)
                return SR_OK;
 
-       session->num_sources -= 1;
+       session->num_sources--;
 
        if (old != session->num_sources) {
-               memmove(&session->pollfds[old], &session->pollfds[old+1],
+               memmove(&session->pollfds[old], &session->pollfds[old + 1],
                        (session->num_sources - old) * sizeof(GPollFD));
-               memmove(&session->sources[old], &session->sources[old+1],
+               memmove(&session->sources[old], &session->sources[old + 1],
                        (session->num_sources - old) * sizeof(struct source));
        }
 
-       new_pollfds = g_try_realloc(session->pollfds, sizeof(GPollFD) * session->num_sources);
-       if (!new_pollfds && session->num_sources > 0) {
-               sr_err("%s: new_pollfds malloc failed", __func__);
-               return SR_ERR_MALLOC;
-       }
-
-       new_sources = g_try_realloc(session->sources, sizeof(struct source) * session->num_sources);
-       if (!new_sources && session->num_sources > 0) {
-               sr_err("%s: new_sources malloc failed", __func__);
-               return SR_ERR_MALLOC;
-       }
-
-       session->pollfds = new_pollfds;
-       session->sources = new_sources;
+       session->pollfds = g_realloc(session->pollfds, sizeof(GPollFD) * session->num_sources);
+       session->sources = g_realloc(session->sources, sizeof(struct source) * session->num_sources);
 
        return SR_OK;
 }
@@ -907,7 +875,6 @@ static int _sr_session_source_remove(struct sr_session *session, gintptr poll_ob
  *
  * @retval SR_OK Success
  * @retval SR_ERR_ARG Invalid argument
- * @retval SR_ERR_MALLOC Memory allocation error.
  * @retval SR_ERR_BUG Internal error.
  *
  * @since 0.3.0
@@ -943,7 +910,6 @@ SR_API int sr_session_source_remove_pollfd(struct sr_session *session,
  *
  * @retval SR_OK Success.
  * @retval SR_ERR_ARG Invalid argument.
- * @retval SR_ERR_MALLOC Memory allocation error.
  * @return SR_ERR_BUG Internal error.
  *
  * @since 0.2.0
index fed47febe3598e15468b0e2433b6decbd362fb48..9755ff0aad19c5fccc17451f22e20b2d2f242cc1 100644 (file)
--- a/src/std.c
+++ b/src/std.c
@@ -41,8 +41,7 @@
  * @param di The driver instance to use.
  * @param[in] prefix A driver-specific prefix string used for log messages.
  *
- * @return SR_OK upon success, SR_ERR_ARG upon invalid arguments, or
- *         SR_ERR_MALLOC upon memory allocation errors.
+ * @return SR_OK upon success, SR_ERR_ARG upon invalid arguments.
  */
 SR_PRIV int std_init(struct sr_context *sr_ctx, struct sr_dev_driver *di,
                     const char *prefix)
@@ -54,11 +53,7 @@ SR_PRIV int std_init(struct sr_context *sr_ctx, struct sr_dev_driver *di,
                return SR_ERR_ARG;
        }
 
-       if (!(drvc = g_try_malloc(sizeof(struct drv_context)))) {
-               sr_err("%s: Driver context malloc failed.", prefix);
-               return SR_ERR_MALLOC;
-       }
-
+       drvc = g_malloc0(sizeof(struct drv_context));
        drvc->sr_ctx = sr_ctx;
        drvc->instances = NULL;
        di->priv = drvc;
index 0306ea7c91f940002861e2ce114654e6a82b0b39..050f37bf7090532cc67282e07c10ce2867a985b6 100644 (file)
@@ -230,7 +230,7 @@ SR_PRIV int sr_atof_ascii(const char *str, float *ret)
  * @param unit The unit to append to the string, or NULL if the string
  *             has no units.
  *
- * @return A g_try_malloc()ed string representation of the samplerate value,
+ * @return A newly allocated string representation of the samplerate value,
  *         or NULL upon errors. The caller is responsible to g_free() the
  *         memory.
  *
@@ -272,7 +272,7 @@ SR_API char *sr_si_string_u64(uint64_t x, const char *unit)
  *
  * @param samplerate The samplerate in Hz.
  *
- * @return A g_try_malloc()ed string representation of the samplerate value,
+ * @return A newly allocated string representation of the samplerate value,
  *         or NULL upon errors. The caller is responsible to g_free() the
  *         memory.
  *
@@ -291,7 +291,7 @@ SR_API char *sr_samplerate_string(uint64_t samplerate)
  *
  * @param frequency The frequency in Hz.
  *
- * @return A g_try_malloc()ed string representation of the frequency value,
+ * @return A newly allocated string representation of the frequency value,
  *         or NULL upon errors. The caller is responsible to g_free() the
  *         memory.
  *
@@ -303,10 +303,7 @@ SR_API char *sr_period_string(uint64_t frequency)
        int r;
 
        /* Allocate enough for a uint64_t as string + " ms". */
-       if (!(o = g_try_malloc0(30 + 1))) {
-               sr_err("%s: o malloc failed", __func__);
-               return NULL;
-       }
+       o = g_malloc0(30 + 1);
 
        if (frequency >= SR_GHZ(1))
                r = snprintf(o, 30, "%" PRIu64 " ns", frequency / 1000000000);
@@ -336,7 +333,7 @@ SR_API char *sr_period_string(uint64_t frequency)
  * @param v_p The voltage numerator.
  * @param v_q The voltage denominator.
  *
- * @return A g_try_malloc()ed string representation of the voltage value,
+ * @return A newly allocated string representation of the voltage value,
  *         or NULL upon errors. The caller is responsible to g_free() the
  *         memory.
  *
@@ -347,10 +344,7 @@ SR_API char *sr_voltage_string(uint64_t v_p, uint64_t v_q)
        int r;
        char *o;
 
-       if (!(o = g_try_malloc0(30 + 1))) {
-               sr_err("%s: o malloc failed", __func__);
-               return NULL;
-       }
+       o = g_malloc0(30 + 1);
 
        if (v_q == 1000)
                r = snprintf(o, 30, "%" PRIu64 "mV", v_p);