diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index 07299dbc09..d4d1282dad 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -844,11 +844,17 @@ cache_locale_time(void)
 	for (i = 0; i < 7; i++)
 	{
 		timeinfo->tm_wday = i;
-		if (strftime(bufptr, MAX_L10N_DATA, "%a", timeinfo) <= 0)
+		if (strftime(bufptr, MAX_L10N_DATA, "%a", timeinfo) == 0)
+		{
 			strftimefail = true;
+			break;
+		}
 		bufptr += MAX_L10N_DATA;
-		if (strftime(bufptr, MAX_L10N_DATA, "%A", timeinfo) <= 0)
+		if (strftime(bufptr, MAX_L10N_DATA, "%A", timeinfo) == 0)
+		{
 			strftimefail = true;
+			break;
+		}
 		bufptr += MAX_L10N_DATA;
 	}
 
@@ -857,11 +863,17 @@ cache_locale_time(void)
 	{
 		timeinfo->tm_mon = i;
 		timeinfo->tm_mday = 1;	/* make sure we don't have invalid date */
-		if (strftime(bufptr, MAX_L10N_DATA, "%b", timeinfo) <= 0)
+		if (strftime(bufptr, MAX_L10N_DATA, "%b", timeinfo) == 0)
+		{
 			strftimefail = true;
+			break;
+		}
 		bufptr += MAX_L10N_DATA;
-		if (strftime(bufptr, MAX_L10N_DATA, "%B", timeinfo) <= 0)
+		if (strftime(bufptr, MAX_L10N_DATA, "%B", timeinfo) == 0)
+		{
 			strftimefail = true;
+			break;
+		}
 		bufptr += MAX_L10N_DATA;
 	}
 
@@ -1999,8 +2011,8 @@ wchar2char(char *to, const wchar_t *from, size_t tolen, pg_locale_t locale)
 		result = WideCharToMultiByte(CP_UTF8, 0, from, -1, to, tolen,
 									 NULL, NULL);
 		/* A zero return is failure */
-		if (result <= 0)
-			result = -1;
+		if (result == 0)
+			return 0;
 		else
 		{
 			Assert(result <= tolen);