]> 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 116e7b34f3086db0d82d9413c802aaceb58a0e89..083b003a6cd6f297cd6f14f099b9a9eaab05d581 100644 (file)
@@ -17,6 +17,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <config.h>
 #include <string.h>
 #include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
@@ -37,7 +38,11 @@ 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) {