Skip to content

Commit

Permalink
ICU-22827 Fix memLeak by using LocalUResourceBundlePointer
Browse files Browse the repository at this point in the history
  • Loading branch information
FrankYFTang committed Aug 5, 2024
1 parent 2f5a46f commit 6c8c6aa
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions icu4c/source/i18n/timezone.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1607,17 +1607,20 @@ TimeZone::getWindowsID(const UnicodeString& id, UnicodeString& winid, UErrorCode
return winid;
}

UResourceBundle *mapTimezones = ures_openDirect(nullptr, "windowsZones", &status);
ures_getByKey(mapTimezones, "mapTimezones", mapTimezones, &status);
LocalUResourceBundlePointer mapTimezones(ures_openDirect(nullptr, "windowsZones", &status));
if (U_FAILURE(status)) {
return winid;
}
ures_getByKey(mapTimezones.getAlias(), "mapTimezones", mapTimezones.getAlias(), &status);

if (U_FAILURE(status)) {
return winid;
}

UResourceBundle *winzone = nullptr;
UBool found = false;
while (ures_hasNext(mapTimezones) && !found) {
winzone = ures_getNextResource(mapTimezones, winzone, &status);
while (ures_hasNext(mapTimezones.getAlias()) && !found) {
winzone = ures_getNextResource(mapTimezones.getAlias(), winzone, &status);
if (U_FAILURE(status)) {
break;
}
Expand Down Expand Up @@ -1658,7 +1661,6 @@ TimeZone::getWindowsID(const UnicodeString& id, UnicodeString& winid, UErrorCode
ures_close(regionalData);
}
ures_close(winzone);
ures_close(mapTimezones);

return winid;
}
Expand Down

0 comments on commit 6c8c6aa

Please sign in to comment.