]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/uspoof_build.cpp
ICU-64260.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / uspoof_build.cpp
index 75c52e0b7650d95b0d38754625854a1a2a595224..192fb9a6885e8ef96a25ee5a04cc376360dd2955 100644 (file)
@@ -71,8 +71,29 @@ uspoof_openFromSource(const char *confusables,  int32_t confusablesLen,
 
     // Set up a shell of a spoof detector, with empty data.
     SpoofData *newSpoofData = new SpoofData(*status);
+
+    if (newSpoofData == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+
+    if (U_FAILURE(*status)) {
+        delete newSpoofData;
+        return NULL;
+    }
     SpoofImpl *This = new SpoofImpl(newSpoofData, *status);
 
+    if (This == NULL) {
+        *status = U_MEMORY_ALLOCATION_ERROR;
+        delete newSpoofData; // explicit delete as the destructor for SpoofImpl won't be called.
+        return NULL;
+    }
+
+    if (U_FAILURE(*status)) {
+        delete This; // no delete for newSpoofData, as the SpoofImpl destructor will delete it.
+        return NULL;
+    }
+
     // Compile the binary data from the source (text) format.
     ConfusabledataBuilder::buildConfusableData(This, confusables, confusablesLen, errorType, pe, *status);