]> sigrok.org Git - libsigrok.git/blobdiff - src/soft-trigger.c
scpi-pps: Add a missing "break" in config_get().
[libsigrok.git] / src / soft-trigger.c
index 27c71b611b4a82546c7c0cf35eda99a30fe40dab..c92365e2baf4eb43aea24baf5115d7c871950ea0 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,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;
        }