From e296d5c747d198401148efa08928bb5e91bce49a Mon Sep 17 00:00:00 2001
From: Joshua Shanks <jjshanks@gmail.com>
Date: Sat, 8 Nov 2025 12:12:56 -0800
Subject: [PATCH] libpq: Wrap out-of-memory error messages with libpq_gettext()

User-facing error messages in libpq must use libpq_gettext() to enable translation when NLS is enabled. This change wraps all "out of memory" error strings across authentication, connection, and protocol modules to ensure they can be properly translated.

Signed-off-by: Joshua Shanks <jjshanks@gmail.com>
---
 src/interfaces/libpq/fe-auth-oauth.c     | 16 ++++-----
 src/interfaces/libpq/fe-auth-scram.c     | 16 ++++-----
 src/interfaces/libpq/fe-auth.c           | 20 +++++------
 src/interfaces/libpq/fe-cancel.c         |  4 +--
 src/interfaces/libpq/fe-connect.c        | 46 ++++++++++++------------
 src/interfaces/libpq/fe-exec.c           |  8 ++---
 src/interfaces/libpq/fe-gssapi-common.c  |  2 +-
 src/interfaces/libpq/fe-lobj.c           |  2 +-
 src/interfaces/libpq/fe-protocol3.c      | 26 +++++++-------
 src/interfaces/libpq/fe-secure-common.c  |  2 +-
 src/interfaces/libpq/fe-secure-gssapi.c  |  4 +--
 src/interfaces/libpq/fe-secure-openssl.c |  4 +--
 12 files changed, 75 insertions(+), 75 deletions(-)

diff --git a/src/interfaces/libpq/fe-auth-oauth.c b/src/interfaces/libpq/fe-auth-oauth.c
index d146c5f567c..0341ba01e7c 100644
--- a/src/interfaces/libpq/fe-auth-oauth.c
+++ b/src/interfaces/libpq/fe-auth-oauth.c
@@ -143,7 +143,7 @@ client_initial_response(PGconn *conn, bool discover)
 	termPQExpBuffer(&buf);
 
 	if (!response)
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 
 	return response;
 }
@@ -479,7 +479,7 @@ issuer_from_well_known_uri(PGconn *conn, const char *wkuri)
 	issuer = strdup(wkuri);
 	if (!issuer)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return NULL;
 	}
 
@@ -713,7 +713,7 @@ run_user_oauth_flow(PGconn *conn)
 		conn->oauth_token = strdup(request->token);
 		if (!conn->oauth_token)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			return PGRES_POLLING_FAILED;
 		}
 
@@ -1006,7 +1006,7 @@ setup_token_request(PGconn *conn, fe_oauth_state *state)
 			conn->oauth_token = strdup(request.token);
 			if (!conn->oauth_token)
 			{
-				libpq_append_conn_error(conn, "out of memory");
+				libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 				goto fail;
 			}
 
@@ -1019,7 +1019,7 @@ setup_token_request(PGconn *conn, fe_oauth_state *state)
 		request_copy = malloc(sizeof(*request_copy));
 		if (!request_copy)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			goto fail;
 		}
 
@@ -1107,7 +1107,7 @@ setup_oauth_parameters(PGconn *conn)
 		conn->oauth_discovery_uri = strdup(conn->oauth_issuer);
 		if (!conn->oauth_discovery_uri)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			return false;
 		}
 	}
@@ -1120,7 +1120,7 @@ setup_oauth_parameters(PGconn *conn)
 		conn->oauth_issuer_id = strdup(conn->oauth_issuer);
 		if (!conn->oauth_issuer_id)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			return false;
 		}
 	}
@@ -1256,7 +1256,7 @@ oauth_exchange(void *opaq, bool final,
 			*output = strdup(kvsep);
 			if (unlikely(!*output))
 			{
-				libpq_append_conn_error(conn, "out of memory");
+				libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 				return SASL_FAILED;
 			}
 			*outputlen = strlen(*output);	/* == 1 */
diff --git a/src/interfaces/libpq/fe-auth-scram.c b/src/interfaces/libpq/fe-auth-scram.c
index f6d6a5aa977..76f65ac2ce1 100644
--- a/src/interfaces/libpq/fe-auth-scram.c
+++ b/src/interfaces/libpq/fe-auth-scram.c
@@ -371,7 +371,7 @@ build_client_first_message(fe_scram_state *state)
 	state->client_nonce = malloc(encoded_len + 1);
 	if (state->client_nonce == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return NULL;
 	}
 	encoded_len = pg_b64_encode(raw_nonce, SCRAM_RAW_NONCE_LEN,
@@ -444,7 +444,7 @@ build_client_first_message(fe_scram_state *state)
 
 oom_error:
 	termPQExpBuffer(&buf);
-	libpq_append_conn_error(conn, "out of memory");
+	libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 	return NULL;
 }
 
@@ -596,7 +596,7 @@ build_client_final_message(fe_scram_state *state)
 
 oom_error:
 	termPQExpBuffer(&buf);
-	libpq_append_conn_error(conn, "out of memory");
+	libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 	return NULL;
 }
 
@@ -616,7 +616,7 @@ read_server_first_message(fe_scram_state *state, char *input)
 	state->server_first_message = strdup(input);
 	if (state->server_first_message == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return false;
 	}
 
@@ -640,7 +640,7 @@ read_server_first_message(fe_scram_state *state, char *input)
 	state->nonce = strdup(nonce);
 	if (state->nonce == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return false;
 	}
 
@@ -654,7 +654,7 @@ read_server_first_message(fe_scram_state *state, char *input)
 	state->salt = malloc(decoded_salt_len);
 	if (state->salt == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return false;
 	}
 	state->saltlen = pg_b64_decode(encoded_salt,
@@ -700,7 +700,7 @@ read_server_final_message(fe_scram_state *state, char *input)
 	state->server_final_message = strdup(input);
 	if (!state->server_final_message)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return false;
 	}
 
@@ -736,7 +736,7 @@ read_server_final_message(fe_scram_state *state, char *input)
 	decoded_server_signature = malloc(server_signature_len);
 	if (!decoded_server_signature)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return false;
 	}
 
diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c
index 84a042269de..f0b5e715a4c 100644
--- a/src/interfaces/libpq/fe-auth.c
+++ b/src/interfaces/libpq/fe-auth.c
@@ -77,7 +77,7 @@ pg_GSS_continue(PGconn *conn, int payloadlen)
 		ginbuf.value = malloc(payloadlen);
 		if (!ginbuf.value)
 		{
-			libpq_append_conn_error(conn, "out of memory allocating GSSAPI buffer (%d)",
+			libpq_append_conn_error(conn, libpq_gettext("out of memory allocating GSSAPI buffer (%d)"),
 									payloadlen);
 			return STATUS_ERROR;
 		}
@@ -243,7 +243,7 @@ pg_SSPI_continue(PGconn *conn, int payloadlen)
 		inputbuf = malloc(payloadlen);
 		if (!inputbuf)
 		{
-			libpq_append_conn_error(conn, "out of memory allocating SSPI buffer (%d)",
+			libpq_append_conn_error(conn, libpq_gettext("out of memory allocating SSPI buffer (%d)"),
 									payloadlen);
 			return STATUS_ERROR;
 		}
@@ -305,7 +305,7 @@ pg_SSPI_continue(PGconn *conn, int payloadlen)
 		conn->sspictx = malloc(sizeof(CtxtHandle));
 		if (conn->sspictx == NULL)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			return STATUS_ERROR;
 		}
 		memcpy(conn->sspictx, &newContext, sizeof(CtxtHandle));
@@ -379,7 +379,7 @@ pg_SSPI_startup(PGconn *conn, int use_negotiate, int payloadlen)
 	conn->sspicred = malloc(sizeof(CredHandle));
 	if (conn->sspicred == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return STATUS_ERROR;
 	}
 
@@ -413,7 +413,7 @@ pg_SSPI_startup(PGconn *conn, int use_negotiate, int payloadlen)
 	conn->sspitarget = malloc(strlen(conn->krbsrvname) + strlen(host) + 2);
 	if (!conn->sspitarget)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return STATUS_ERROR;
 	}
 	sprintf(conn->sspitarget, "%s/%s", conn->krbsrvname, host);
@@ -691,7 +691,7 @@ error:
 oom_error:
 	termPQExpBuffer(&mechanism_buf);
 	free(initialresponse);
-	libpq_append_conn_error(conn, "out of memory");
+	libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 	return STATUS_ERROR;
 }
 
@@ -713,7 +713,7 @@ pg_SASL_continue(PGconn *conn, int payloadlen, bool final, bool *async)
 	challenge = malloc(payloadlen + 1);
 	if (!challenge)
 	{
-		libpq_append_conn_error(conn, "out of memory allocating SASL buffer (%d)",
+		libpq_append_conn_error(conn, libpq_gettext("out of memory allocating SASL buffer (%d)"),
 								payloadlen);
 		return STATUS_ERROR;
 	}
@@ -824,7 +824,7 @@ pg_password_sendauth(PGconn *conn, const char *password, AuthRequest areq)
 				crypt_pwd = malloc(2 * (MD5_PASSWD_LEN + 1));
 				if (!crypt_pwd)
 				{
-					libpq_append_conn_error(conn, "out of memory");
+					libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 					return STATUS_ERROR;
 				}
 
@@ -1327,7 +1327,7 @@ pg_fe_getusername(uid_t user_id, PQExpBuffer errorMessage)
 	{
 		result = strdup(name);
 		if (result == NULL && errorMessage)
-			libpq_append_error(errorMessage, "out of memory");
+			libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 	}
 
 	return result;
@@ -1490,7 +1490,7 @@ PQencryptPasswordConn(PGconn *conn, const char *passwd, const char *user,
 			}
 		}
 		else
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 	}
 	else
 	{
diff --git a/src/interfaces/libpq/fe-cancel.c b/src/interfaces/libpq/fe-cancel.c
index c872a0267f0..d65b4638651 100644
--- a/src/interfaces/libpq/fe-cancel.c
+++ b/src/interfaces/libpq/fe-cancel.c
@@ -175,7 +175,7 @@ PQcancelCreate(PGconn *conn)
 
 oom_error:
 	cancelConn->status = CONNECTION_BAD;
-	libpq_append_conn_error(cancelConn, "out of memory");
+	libpq_append_conn_error(cancelConn, libpq_gettext("out of memory"));
 	return (PGcancelConn *) cancelConn;
 }
 
@@ -778,7 +778,7 @@ PQrequestCancel(PGconn *conn)
 	}
 	else
 	{
-		strlcpy(conn->errorMessage.data, "out of memory",
+		strlcpy(conn->errorMessage.data, libpq_gettext("out of memory"),
 				conn->errorMessage.maxlen);
 		r = false;
 	}
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 19bbc006669..4163f9cd1b3 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -1013,7 +1013,7 @@ fillPGconn(PGconn *conn, PQconninfoOption *connOptions)
 				*connmember = strdup(tmp);
 				if (*connmember == NULL)
 				{
-					libpq_append_conn_error(conn, "out of memory");
+					libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 					return false;
 				}
 			}
@@ -1053,7 +1053,7 @@ pqCopyPGconn(PGconn *srcConn, PGconn *dstConn)
 				*dstConnmember = strdup(*tmp);
 				if (*dstConnmember == NULL)
 				{
-					libpq_append_conn_error(dstConn, "out of memory");
+					libpq_append_conn_error(dstConn, libpq_gettext("out of memory"));
 					return false;
 				}
 			}
@@ -2182,7 +2182,7 @@ pqConnectOptions2(PGconn *conn)
 
 oom_error:
 	conn->status = CONNECTION_BAD;
-	libpq_append_conn_error(conn, "out of memory");
+	libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 	return false;
 }
 
@@ -2344,7 +2344,7 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions,
 
 oom_error:
 	conn->status = CONNECTION_BAD;
-	libpq_append_conn_error(conn, "out of memory");
+	libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 	return conn;
 }
 
@@ -3737,7 +3737,7 @@ keep_going:						/* We will come back to here until there is
 													EnvironmentOptions);
 				if (!startpacket)
 				{
-					libpq_append_conn_error(conn, "out of memory");
+					libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 					goto error_return;
 				}
 
@@ -5194,7 +5194,7 @@ store_conn_addrinfo(PGconn *conn, struct addrinfo *addrlist)
 	conn->addr = calloc(conn->naddr, sizeof(AddrInfo));
 	if (conn->addr == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return 1;
 	}
 
@@ -5508,7 +5508,7 @@ ldapServiceLookup(const char *purl, PQconninfoOption *options,
 
 	if ((url = strdup(purl)) == NULL)
 	{
-		libpq_append_error(errorMessage, "out of memory");
+		libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 		return 3;
 	}
 
@@ -5772,7 +5772,7 @@ ldapServiceLookup(const char *purl, PQconninfoOption *options,
 		size += values[i]->bv_len + 1;
 	if ((result = malloc(size)) == NULL)
 	{
-		libpq_append_error(errorMessage, "out of memory");
+		libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 		ldap_value_free_len(values);
 		ldap_unbind(ld);
 		return 3;
@@ -5890,7 +5890,7 @@ ldapServiceLookup(const char *purl, PQconninfoOption *options,
 						options[i].val = strdup(optval);
 						if (!options[i].val)
 						{
-							libpq_append_error(errorMessage, "out of memory");
+							libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 							free(result);
 							return 3;
 						}
@@ -6151,7 +6151,7 @@ parseServiceFile(const char *serviceFile,
 							options[i].val = strdup(val);
 						if (!options[i].val)
 						{
-							libpq_append_error(errorMessage, "out of memory");
+							libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 							result = 3;
 							goto exit;
 						}
@@ -6194,7 +6194,7 @@ exit:
 			options[i].val = strdup(serviceFile);
 			if (options[i].val == NULL)
 			{
-				libpq_append_error(errorMessage, "out of memory");
+				libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 				result = 3;
 			}
 			break;
@@ -6258,7 +6258,7 @@ conninfo_init(PQExpBuffer errorMessage)
 	options = (PQconninfoOption *) malloc(sizeof(PQconninfoOption) * sizeof(PQconninfoOptions) / sizeof(PQconninfoOptions[0]));
 	if (options == NULL)
 	{
-		libpq_append_error(errorMessage, "out of memory");
+		libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 		return NULL;
 	}
 	opt_dest = options;
@@ -6356,7 +6356,7 @@ conninfo_parse(const char *conninfo, PQExpBuffer errorMessage,
 	/* Need a modifiable copy of the input string */
 	if ((buf = strdup(conninfo)) == NULL)
 	{
-		libpq_append_error(errorMessage, "out of memory");
+		libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 		PQconninfoFree(options);
 		return NULL;
 	}
@@ -6607,7 +6607,7 @@ conninfo_array_parse(const char *const *keywords, const char *const *values,
 								options[k].val = strdup(str_option->val);
 								if (!options[k].val)
 								{
-									libpq_append_error(errorMessage, "out of memory");
+									libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 									PQconninfoFree(options);
 									PQconninfoFree(dbname_options);
 									return NULL;
@@ -6634,7 +6634,7 @@ conninfo_array_parse(const char *const *keywords, const char *const *values,
 				option->val = strdup(pvalue);
 				if (!option->val)
 				{
-					libpq_append_error(errorMessage, "out of memory");
+					libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 					PQconninfoFree(options);
 					PQconninfoFree(dbname_options);
 					return NULL;
@@ -6710,7 +6710,7 @@ conninfo_add_defaults(PQconninfoOption *options, PQExpBuffer errorMessage)
 				if (!option->val)
 				{
 					if (errorMessage)
-						libpq_append_error(errorMessage, "out of memory");
+						libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 					return false;
 				}
 				continue;
@@ -6733,7 +6733,7 @@ conninfo_add_defaults(PQconninfoOption *options, PQExpBuffer errorMessage)
 				if (!option->val)
 				{
 					if (errorMessage)
-						libpq_append_error(errorMessage, "out of memory");
+						libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 					return false;
 				}
 				continue;
@@ -6757,7 +6757,7 @@ conninfo_add_defaults(PQconninfoOption *options, PQExpBuffer errorMessage)
 			if (!option->val)
 			{
 				if (errorMessage)
-					libpq_append_error(errorMessage, "out of memory");
+					libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 				return false;
 			}
 			continue;
@@ -6792,7 +6792,7 @@ conninfo_add_defaults(PQconninfoOption *options, PQExpBuffer errorMessage)
 			if (!sslmode_default->val)
 			{
 				if (errorMessage)
-					libpq_append_error(errorMessage, "out of memory");
+					libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 				return false;
 			}
 		}
@@ -6878,7 +6878,7 @@ conninfo_uri_parse_options(PQconninfoOption *options, const char *uri,
 	initPQExpBuffer(&portbuf);
 	if (PQExpBufferDataBroken(hostbuf) || PQExpBufferDataBroken(portbuf))
 	{
-		libpq_append_error(errorMessage, "out of memory");
+		libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 		goto cleanup;
 	}
 
@@ -6886,7 +6886,7 @@ conninfo_uri_parse_options(PQconninfoOption *options, const char *uri,
 	buf = strdup(uri);
 	if (buf == NULL)
 	{
-		libpq_append_error(errorMessage, "out of memory");
+		libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 		goto cleanup;
 	}
 	start = buf;
@@ -7243,7 +7243,7 @@ conninfo_uri_decode(const char *str, PQExpBuffer errorMessage)
 	buf = malloc(strlen(str) + 1);
 	if (buf == NULL)
 	{
-		libpq_append_error(errorMessage, "out of memory");
+		libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 		return NULL;
 	}
 	p = buf;
@@ -7425,7 +7425,7 @@ conninfo_storeval(PQconninfoOption *connOptions,
 		value_copy = strdup(value);
 		if (value_copy == NULL)
 		{
-			libpq_append_error(errorMessage, "out of memory");
+			libpq_append_error(errorMessage, libpq_gettext("out of memory"));
 			return NULL;
 		}
 	}
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index 0b1e37ec30b..a98ab0e833d 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -1323,7 +1323,7 @@ pqAllocCmdQueueEntry(PGconn *conn)
 		entry = (PGcmdQueueEntry *) malloc(sizeof(PGcmdQueueEntry));
 		if (entry == NULL)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			return NULL;
 		}
 	}
@@ -3262,7 +3262,7 @@ pqPipelineProcessQueue(PGconn *conn)
 		conn->result = PQmakeEmptyPGresult(conn, PGRES_PIPELINE_ABORTED);
 		if (!conn->result)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			pqSaveErrorResult(conn);
 			return;
 		}
@@ -4301,7 +4301,7 @@ PQescapeInternal(PGconn *conn, const char *str, size_t len, bool as_ident)
 	result = rp = (char *) malloc(result_size);
 	if (rp == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return NULL;
 	}
 
@@ -4467,7 +4467,7 @@ PQescapeByteaInternal(PGconn *conn,
 	if (rp == NULL)
 	{
 		if (conn)
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return NULL;
 	}
 
diff --git a/src/interfaces/libpq/fe-gssapi-common.c b/src/interfaces/libpq/fe-gssapi-common.c
index 1ae2bd24c1d..bd7310cef6b 100644
--- a/src/interfaces/libpq/fe-gssapi-common.c
+++ b/src/interfaces/libpq/fe-gssapi-common.c
@@ -106,7 +106,7 @@ pg_GSS_load_servicename(PGconn *conn)
 	temp_gbuf.value = (char *) malloc(maxlen);
 	if (!temp_gbuf.value)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return STATUS_ERROR;
 	}
 	snprintf(temp_gbuf.value, maxlen, "%s@%s",
diff --git a/src/interfaces/libpq/fe-lobj.c b/src/interfaces/libpq/fe-lobj.c
index 05e17bed508..d3db89f3f38 100644
--- a/src/interfaces/libpq/fe-lobj.c
+++ b/src/interfaces/libpq/fe-lobj.c
@@ -867,7 +867,7 @@ lo_initialize(PGconn *conn)
 	lobjfuncs = (PGlobjfuncs *) malloc(sizeof(PGlobjfuncs));
 	if (lobjfuncs == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return -1;
 	}
 	MemSet(lobjfuncs, 0, sizeof(PGlobjfuncs));
diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c
index da7a8db68c8..3bf8e95b5bf 100644
--- a/src/interfaces/libpq/fe-protocol3.c
+++ b/src/interfaces/libpq/fe-protocol3.c
@@ -208,7 +208,7 @@ pqParseInput3(PGconn *conn)
 														   PGRES_COMMAND_OK);
 						if (!conn->result)
 						{
-							libpq_append_conn_error(conn, "out of memory");
+							libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 							pqSaveErrorResult(conn);
 						}
 					}
@@ -231,7 +231,7 @@ pqParseInput3(PGconn *conn)
 														   PGRES_PIPELINE_SYNC);
 						if (!conn->result)
 						{
-							libpq_append_conn_error(conn, "out of memory");
+							libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 							pqSaveErrorResult(conn);
 						}
 						else
@@ -254,7 +254,7 @@ pqParseInput3(PGconn *conn)
 														   PGRES_EMPTY_QUERY);
 						if (!conn->result)
 						{
-							libpq_append_conn_error(conn, "out of memory");
+							libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 							pqSaveErrorResult(conn);
 						}
 					}
@@ -271,7 +271,7 @@ pqParseInput3(PGconn *conn)
 															   PGRES_COMMAND_OK);
 							if (!conn->result)
 							{
-								libpq_append_conn_error(conn, "out of memory");
+								libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 								pqSaveErrorResult(conn);
 							}
 						}
@@ -292,7 +292,7 @@ pqParseInput3(PGconn *conn)
 															   PGRES_COMMAND_OK);
 							if (!conn->result)
 							{
-								libpq_append_conn_error(conn, "out of memory");
+								libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 								pqSaveErrorResult(conn);
 							}
 						}
@@ -366,7 +366,7 @@ pqParseInput3(PGconn *conn)
 															   PGRES_COMMAND_OK);
 							if (!conn->result)
 							{
-								libpq_append_conn_error(conn, "out of memory");
+								libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 								pqSaveErrorResult(conn);
 							}
 						}
@@ -987,7 +987,7 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
 		}
 
 		if (PQExpBufferDataBroken(workBuf))
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		else
 			appendPQExpBufferStr(&conn->errorMessage, workBuf.data);
 	}
@@ -1539,7 +1539,7 @@ getParameterStatus(PGconn *conn)
 	/* And save it */
 	if (!pqSaveParameterStatus(conn, conn->workBuffer.data, valueBuf.data))
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		handleFatalError(conn);
 	}
 	termPQExpBuffer(&valueBuf);
@@ -1593,7 +1593,7 @@ getBackendKeyData(PGconn *conn, int msgLength)
 	conn->be_cancel_key = malloc(cancel_key_len);
 	if (conn->be_cancel_key == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		handleFatalError(conn);
 		return 0;
 	}
@@ -1639,7 +1639,7 @@ getNotify(PGconn *conn)
 		 * "async error", so the best we can do is drop the connection.  That
 		 * seems better than silently ignoring the notification.
 		 */
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		handleFatalError(conn);
 		return 0;
 	}
@@ -1660,7 +1660,7 @@ getNotify(PGconn *conn)
 	if (!newNotify)
 	{
 		free(svname);
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		handleFatalError(conn);
 		return 0;
 	}
@@ -1917,7 +1917,7 @@ pqGetCopyData3(PGconn *conn, char **buffer, int async)
 			*buffer = (char *) malloc(msgLength + 1);
 			if (*buffer == NULL)
 			{
-				libpq_append_conn_error(conn, "out of memory");
+				libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 				return -2;
 			}
 			memcpy(*buffer, &conn->inBuffer[conn->inCursor], msgLength);
@@ -2318,7 +2318,7 @@ pqFunctionCall3(PGconn *conn, Oid fnid,
 						conn->result = PQmakeEmptyPGresult(conn, status);
 						if (!conn->result)
 						{
-							libpq_append_conn_error(conn, "out of memory");
+							libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 							pqSaveErrorResult(conn);
 						}
 					}
diff --git a/src/interfaces/libpq/fe-secure-common.c b/src/interfaces/libpq/fe-secure-common.c
index 56d0d612eed..df8ae47271c 100644
--- a/src/interfaces/libpq/fe-secure-common.c
+++ b/src/interfaces/libpq/fe-secure-common.c
@@ -107,7 +107,7 @@ pq_verify_peer_name_matches_certificate_name(PGconn *conn,
 	name = malloc(namelen + 1);
 	if (name == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return -1;
 	}
 	memcpy(name, namedata, namelen);
diff --git a/src/interfaces/libpq/fe-secure-gssapi.c b/src/interfaces/libpq/fe-secure-gssapi.c
index 843b31e175f..3e5c9158623 100644
--- a/src/interfaces/libpq/fe-secure-gssapi.c
+++ b/src/interfaces/libpq/fe-secure-gssapi.c
@@ -505,7 +505,7 @@ pqsecure_open_gss(PGconn *conn)
 		PqGSSResultBuffer = malloc(PQ_GSS_AUTH_BUFFER_SIZE);
 		if (!PqGSSSendBuffer || !PqGSSRecvBuffer || !PqGSSResultBuffer)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			return PGRES_POLLING_FAILED;
 		}
 		PqGSSSendLength = PqGSSSendNext = PqGSSSendConsumed = 0;
@@ -696,7 +696,7 @@ pqsecure_open_gss(PGconn *conn)
 		PqGSSResultBuffer = malloc(PQ_GSS_MAX_PACKET_SIZE);
 		if (!PqGSSSendBuffer || !PqGSSRecvBuffer || !PqGSSResultBuffer)
 		{
-			libpq_append_conn_error(conn, "out of memory");
+			libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 			return PGRES_POLLING_FAILED;
 		}
 		PqGSSSendLength = PqGSSSendNext = PqGSSSendConsumed = 0;
diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c
index 51dd7b9fec0..95a59755975 100644
--- a/src/interfaces/libpq/fe-secure-openssl.c
+++ b/src/interfaces/libpq/fe-secure-openssl.c
@@ -402,7 +402,7 @@ pgtls_get_peer_certificate_hash(PGconn *conn, size_t *len)
 	cert_hash = malloc(hash_size);
 	if (cert_hash == NULL)
 	{
-		libpq_append_conn_error(conn, "out of memory");
+		libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 		return NULL;
 	}
 	memcpy(cert_hash, hash, hash_size);
@@ -1132,7 +1132,7 @@ initialize_SSL(PGconn *conn)
 
 			if (engine_str == NULL)
 			{
-				libpq_append_conn_error(conn, "out of memory");
+				libpq_append_conn_error(conn, libpq_gettext("out of memory"));
 				return -1;
 			}
 
-- 
2.34.1

