X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsoft-trigger.c;h=c92365e2baf4eb43aea24baf5115d7c871950ea0;hb=8a14fc0828b54a1a6e5be37323ca4c660b8b7bed;hp=107e6219c58071597debddcc666c760577c622e6;hpb=fe5a735553470fe372ff1c12eb55398bd0f098b8;p=libsigrok.git
diff --git a/src/soft-trigger.c b/src/soft-trigger.c
index 107e6219..c92365e2 100644
--- a/src/soft-trigger.c
+++ b/src/soft-trigger.c
@@ -17,8 +17,9 @@
* along with this program. If not, see .
*/
+#include
#include
-#include "libsigrok.h"
+#include
#include "libsigrok-internal.h"
/* @cond PRIVATE */
@@ -37,10 +38,19 @@ 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 (pre_trigger_samples > 0 && !stl->pre_trigger_buffer) {
+ /*
+ * Error out if g_try_malloc() failed (or was invoked as
+ * g_try_malloc(0)) *and* more than 0 pretrigger samples
+ * were requested.
+ */
+ 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 +229,3 @@ SR_PRIV int soft_trigger_logic_check(struct soft_trigger_logic *stl,
return offset;
}
-