Skip to content

Commit 64de59d

Browse files
committed
avoid unterminated loop when closing the statement.
1 parent ee103a7 commit 64de59d

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

ext/pdo_mysql/mysql_statement.c

+15-10
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,14 @@ static int pdo_mysql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
6969
#endif
7070
#if HAVE_MYSQL_NEXT_RESULT
7171
while (mysql_more_results(S->H->server)) {
72-
if (mysql_next_result(S->H->server) == 0) {
73-
MYSQL_RES *res = mysql_store_result(S->H->server);
74-
if (res) {
75-
mysql_free_result(res);
76-
}
72+
MYSQL_RES *res;
73+
if (mysql_next_result(S->H->server) != 0) {
74+
break;
75+
}
76+
77+
res = mysql_store_result(S->H->server);
78+
if (res) {
79+
mysql_free_result(res);
7780
}
7881
}
7982
#endif
@@ -602,11 +605,13 @@ static int pdo_mysql_stmt_cursor_closer(pdo_stmt_t *stmt TSRMLS_DC)
602605
}
603606
#if HAVE_MYSQL_NEXT_RESULT
604607
while (mysql_more_results(S->H->server)) {
605-
if (mysql_next_result(S->H->server) == 0) {
606-
MYSQL_RES *res = mysql_store_result(S->H->server);
607-
if (res) {
608-
mysql_free_result(res);
609-
}
608+
MYSQL_RES *res;
609+
if (mysql_next_result(S->H->server) != 0) {
610+
break;
611+
}
612+
res = mysql_store_result(S->H->server);
613+
if (res) {
614+
mysql_free_result(res);
610615
}
611616
}
612617
#endif

0 commit comments

Comments
 (0)