LOGE("[PRVINFO_ERROR_INVALID_PARAMETER] privilege_list is NULL");
return PRVINFO_ERROR_INVALID_PARAMETER;
}
-
- char *orig_locale = (char *)setlocale(LC_ALL, NULL);
- if (!orig_locale) {
+ char *orig_locale = NULL;
+ char *result = (char *)setlocale(LC_ALL, NULL);
+ if (!result) {
LOGE("failed to get original locale. orig_locale = %s", orig_locale);
+ } else {
+ orig_locale = strdup(result);
+ TryReturn(orig_locale != NULL, , PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] strdup of orig_locale failed");
+ LOGD("orig_locale = %s", orig_locale);
}
- char *result = (char *)setlocale(LC_ALL, locale);
+ result = (char *)setlocale(LC_ALL, locale);
if (result) {
LOGI("succeeded in setting locale = %s", result);
} else {
free(privilege_description);
privilege_description = NULL;
}
-
- setlocale(LC_ALL, orig_locale);
+ if (orig_locale != NULL) {
+ setlocale(LC_ALL, orig_locale);
+ free(orig_locale);
+ orig_locale = NULL;
+ }
return ret;
}