]> granicus.if.org Git - icu/commitdiff
ICU-9669 ures_getStringByKeyWithFallback() to work correctly when returning UChar...
authorTravis Keep <keep94@gmail.com>
Mon, 26 Nov 2012 21:06:37 +0000 (21:06 +0000)
committerTravis Keep <keep94@gmail.com>
Mon, 26 Nov 2012 21:06:37 +0000 (21:06 +0000)
X-SVN-Rev: 32889

icu4c/source/common/uresbund.cpp

index 0404e36a821e3b0cd7cda7fbf5cefe2f711e1bb3..5bed3fb679aaead9176af2bebb900da9bada1ffc 100644 (file)
@@ -1670,13 +1670,20 @@ ures_getStringByKeyWithFallback(const UResourceBundle *resB,
     const UChar* retVal = NULL;
     ures_initStackObject(&stack);
     ures_getByKeyWithFallback(resB, inKey, &stack, status);
-    retVal = ures_getString(&stack, len, status);
+    int32_t length;
+    retVal = ures_getString(&stack, &length, status);
     ures_close(&stack);
-    if ( retVal != NULL && u_strlen(retVal) == 3 && retVal[0] == EMPTY_SET && retVal[1] == EMPTY_SET && retVal[2] == EMPTY_SET ) {
+    if (U_FAILURE(*status)) {
+      return NULL;
+    }
+    if (length == 3 && retVal[0] == EMPTY_SET && retVal[1] == EMPTY_SET && retVal[2] == EMPTY_SET ) {
         retVal = NULL;
-        *len = 0;
+        length = 0;
         *status = U_MISSING_RESOURCE_ERROR;
     }
+    if (len != NULL) {
+      *len = length;
+    }
     return retVal;
 }