]> sigrok.org Git - libsigrok.git/blobdiff - src/soft-trigger.c
soft-trigger: Use g_try_malloc() for potentially large allocation.
[libsigrok.git] / src / soft-trigger.c
index 107e6219c58071597debddcc666c760577c622e6..083b003a6cd6f297cd6f14f099b9a9eaab05d581 100644 (file)
@@ -17,8 +17,9 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <config.h>
 #include <string.h>
-#include "libsigrok.h"
+#include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
 
 /* @cond PRIVATE */
@@ -37,10 +38,14 @@ SR_PRIV struct soft_trigger_logic *soft_trigger_logic_new(
        stl->unitsize = (g_slist_length(sdi->channels) + 7) / 8;
        stl->prev_sample = g_malloc0(stl->unitsize);
        stl->pre_trigger_size = stl->unitsize * pre_trigger_samples;
-       stl->pre_trigger_buffer = g_malloc(stl->pre_trigger_size);
+       stl->pre_trigger_buffer = g_try_malloc(stl->pre_trigger_size);
+       if (!stl->pre_trigger_buffer) {
+               soft_trigger_logic_free(stl);
+               return NULL;
+       }
        stl->pre_trigger_head = stl->pre_trigger_buffer;
 
-       if (stl->pre_trigger_size > 0 && stl->pre_trigger_buffer == NULL) {
+       if (stl->pre_trigger_size > 0 && !stl->pre_trigger_buffer) {
                soft_trigger_logic_free(stl);
                return NULL;
        }
@@ -219,4 +224,3 @@ SR_PRIV int soft_trigger_logic_check(struct soft_trigger_logic *stl,
 
        return offset;
 }
-