From d902b3a84461f37d355e35544b6d7f2dac1164a3 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Fri, 13 Aug 2021 20:03:26 +0100 Subject: [PATCH] Replace macro with inline function (#7365) --- ext/mysqlnd/mysqlnd_alloc.h | 12 ++++++++++++ ext/mysqlnd/mysqlnd_auth.c | 2 +- ext/mysqlnd/mysqlnd_connection.h | 25 ------------------------- ext/mysqlnd/mysqlnd_result.c | 5 ++--- ext/mysqlnd/mysqlnd_wireprotocol.c | 3 +-- 5 files changed, 16 insertions(+), 31 deletions(-) diff --git a/ext/mysqlnd/mysqlnd_alloc.h b/ext/mysqlnd/mysqlnd_alloc.h index de1ed51d41b..bb1980cfcf0 100644 --- a/ext/mysqlnd/mysqlnd_alloc.h +++ b/ext/mysqlnd/mysqlnd_alloc.h @@ -71,4 +71,16 @@ static inline MYSQLND_CSTRING mnd_str2c(const MYSQLND_STRING str) return ret; } +static inline void mysqlnd_set_string(MYSQLND_STRING *buf, const char *string, size_t len) { + if (buf->s) { + mnd_efree(buf->s); + buf->s = NULL; + buf->l = 0; + } + if (string) { + buf->s = mnd_pestrndup(string, len, 0); + buf->l = len; + } +} + #endif /* MYSQLND_ALLOC_H */ diff --git a/ext/mysqlnd/mysqlnd_auth.c b/ext/mysqlnd/mysqlnd_auth.c index 49bc413d978..62d248c940e 100644 --- a/ext/mysqlnd/mysqlnd_auth.c +++ b/ext/mysqlnd/mysqlnd_auth.c @@ -353,7 +353,7 @@ mysqlnd_auth_handshake(MYSQLND_CONN_DATA * conn, goto end; } - SET_NEW_MESSAGE(conn->last_message.s, conn->last_message.l, auth_resp_packet.message, auth_resp_packet.message_len); + mysqlnd_set_string(&conn->last_message, auth_resp_packet.message, auth_resp_packet.message_len); ret = PASS; end: PACKET_FREE(&auth_resp_packet); diff --git a/ext/mysqlnd/mysqlnd_connection.h b/ext/mysqlnd/mysqlnd_connection.h index b5277be202a..39d7712b132 100644 --- a/ext/mysqlnd/mysqlnd_connection.h +++ b/ext/mysqlnd/mysqlnd_connection.h @@ -40,31 +40,6 @@ void mysqlnd_upsert_status_init(MYSQLND_UPSERT_STATUS * const upsert_status); #define UPSERT_STATUS_GET_LAST_INSERT_ID(status) (status)->last_insert_id #define UPSERT_STATUS_SET_LAST_INSERT_ID(status, id) (status)->last_insert_id = (id) - -/* Error handling */ -#define SET_NEW_MESSAGE(buf, buf_len, message, len) \ - {\ - if ((buf)) { \ - mnd_efree((buf)); \ - } \ - if ((message)) { \ - (buf) = mnd_pestrndup((message), (len), 0); \ - } else { \ - (buf) = NULL; \ - } \ - (buf_len) = (len); \ - } - -#define SET_EMPTY_MESSAGE(buf, buf_len) \ - {\ - if ((buf)) { \ - mnd_efree((buf)); \ - (buf) = NULL; \ - } \ - (buf_len) = 0; \ - } - - PHPAPI void mysqlnd_error_info_init(MYSQLND_ERROR_INFO * const info, const bool persistent); PHPAPI void mysqlnd_error_info_free_contents(MYSQLND_ERROR_INFO * const info); diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c index f6e43141e9d..2a1ddc350bd 100644 --- a/ext/mysqlnd/mysqlnd_result.c +++ b/ext/mysqlnd/mysqlnd_result.c @@ -236,8 +236,7 @@ mysqlnd_query_read_result_set_header(MYSQLND_CONN_DATA * conn, MYSQLND_STMT * s) UPSERT_STATUS_SET_SERVER_STATUS(conn->upsert_status, rset_header.server_status); UPSERT_STATUS_SET_AFFECTED_ROWS(conn->upsert_status, rset_header.affected_rows); UPSERT_STATUS_SET_LAST_INSERT_ID(conn->upsert_status, rset_header.last_insert_id); - SET_NEW_MESSAGE(conn->last_message.s, conn->last_message.l, - rset_header.info_or_local_file.s, rset_header.info_or_local_file.l); + mysqlnd_set_string(&conn->last_message, rset_header.info_or_local_file.s, rset_header.info_or_local_file.l); /* Result set can follow UPSERT statement, check server_status */ if (UPSERT_STATUS_GET_SERVER_STATUS(conn->upsert_status) & SERVER_MORE_RESULTS_EXISTS) { SET_CONNECTION_STATE(&conn->state, CONN_NEXT_RESULT_PENDING); @@ -252,7 +251,7 @@ mysqlnd_query_read_result_set_header(MYSQLND_CONN_DATA * conn, MYSQLND_STMT * s) enum_mysqlnd_collected_stats statistic = STAT_LAST; DBG_INF("Result set pending"); - SET_EMPTY_MESSAGE(conn->last_message.s, conn->last_message.l); + mysqlnd_set_string(&conn->last_message, NULL, 0); MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_RSET_QUERY); UPSERT_STATUS_RESET(conn->upsert_status); diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 8c443927807..445df72d902 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -2505,8 +2505,7 @@ MYSQLND_METHOD(mysqlnd_protocol, send_command_handle_OK)( upsert_status->server_status &= ~SERVER_MORE_RESULTS_EXISTS; UPSERT_STATUS_SET_AFFECTED_ROWS_TO_ERROR(upsert_status); } else { - SET_NEW_MESSAGE(last_message->s, last_message->l, - ok_response.message, ok_response.message_len); + mysqlnd_set_string(last_message, ok_response.message, ok_response.message_len); if (!ignore_upsert_status) { UPSERT_STATUS_RESET(upsert_status); UPSERT_STATUS_SET_WARNINGS(upsert_status, ok_response.warning_count);