From e83d2aa3f7e61cdea146f580c99fda7d3593a3ff Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jmvalin@jmvalin.ca>
Date: Fri, 15 Nov 2013 01:52:28 -0500
Subject: [PATCH] Adds missing RESTORE_STACKs in celt_encode_with_ec()

---
 celt/celt_encoder.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/celt/celt_encoder.c b/celt/celt_encoder.c
index ba78ea979..6c5e5cdc5 100644
--- a/celt/celt_encoder.c
+++ b/celt/celt_encoder.c
@@ -1305,14 +1305,20 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm,
    eBands = mode->eBands;
    tf_estimate = 0;
    if (nbCompressedBytes<2 || pcm==NULL)
-     return OPUS_BAD_ARG;
+   {
+      RESTORE_STACK
+      return OPUS_BAD_ARG;
+   }
 
    frame_size *= st->upsample;
    for (LM=0;LM<=mode->maxLM;LM++)
       if (mode->shortMdctSize<<LM==frame_size)
          break;
    if (LM>mode->maxLM)
+   {
+      RESTORE_STACK
       return OPUS_BAD_ARG;
+   }
    M=1<<LM;
    N = M*mode->shortMdctSize;
 
@@ -1343,7 +1349,10 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm,
       {
          int c0 = toOpus(compressed[0]);
          if (c0<0)
+         {
+            RESTORE_STACK
             return OPUS_BAD_ARG;
+         }
          compressed[0] = c0;
       }
       compressed++;
-- 
GitLab