Bug 1376585 - prevent memory leak in setCloneBuffer_impl. r?jandem draft
authorAndi-Bogdan Postelnicu <bpostelnicu@mozilla.com>
Tue, 27 Jun 2017 14:48:57 -0700
changeset 600916 ba95ff8b8e43063541a77087289eb6d6b9d77906
parent 600616 f4e52135d9bdc6ce98bb37b450021445aed894ce
child 635117 115f50da213c9ed0d3b47204b0fb67002cfa1653
push id65900
push userbmo:bpostelnicu@mozilla.com
push dateTue, 27 Jun 2017 21:49:34 +0000
reviewersjandem
bugs1376585
milestone56.0a1
Bug 1376585 - prevent memory leak in setCloneBuffer_impl. r?jandem MozReview-Commit-ID: HX2Siss7un2
js/src/builtin/TestingFunctions.cpp
--- a/js/src/builtin/TestingFunctions.cpp
+++ b/js/src/builtin/TestingFunctions.cpp
@@ -2373,18 +2373,20 @@ class CloneBufferObject : public NativeO
         obj->discard();
 
         char* str = JS_EncodeString(cx, args[0].toString());
         if (!str)
             return false;
         size_t nbytes = JS_GetStringLength(args[0].toString());
         MOZ_ASSERT(nbytes % sizeof(uint64_t) == 0);
         auto buf = js::MakeUnique<JSStructuredCloneData>(0, 0, nbytes);
-        if (!buf->Init(nbytes, nbytes))
+        if (!buf->Init(nbytes, nbytes)) {
+            JS_free(cx, str);
             return false;
+        }
         js_memcpy(buf->Start(), str, nbytes);
         JS_free(cx, str);
         obj->setData(buf.release());
 
         args.rval().setUndefined();
         return true;
     }