diff --git a/src/hb-blob.cc b/src/hb-blob.cc
index 17aa4f44d..38f4a6a40 100644
--- a/src/hb-blob.cc
+++ b/src/hb-blob.cc
@@ -365,10 +365,9 @@ hb_blob_get_data (hb_blob_t *blob, unsigned int *length)
 char *
 hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length)
 {
-  if (!blob->try_make_writable ()) {
-    if (length)
-      *length = 0;
-
+  if (!blob->try_make_writable ())
+  {
+    if (length) *length = 0;
     return nullptr;
   }
 
@@ -443,6 +442,9 @@ hb_blob_t::try_make_writable ()
   if (hb_object_is_immutable (this))
     return false;
 
+  if (unlikely (!length))
+    mode = HB_MEMORY_MODE_WRITABLE;
+
   if (this->mode == HB_MEMORY_MODE_WRITABLE)
     return true;