Skip to content

Commit 7088cff

Browse files
committed
mysqlnd_error_info_init() cannot fail
1 parent 35d752f commit 7088cff

File tree

4 files changed

+24
-54
lines changed

4 files changed

+24
-54
lines changed

ext/mysqlnd/mysqlnd_connection.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ MYSQLND_CLASS_METHODS_END;
146146

147147

148148
/* {{{ mysqlnd_error_info_init */
149-
PHPAPI enum_func_status
149+
PHPAPI void
150150
mysqlnd_error_info_init(MYSQLND_ERROR_INFO * const info, const zend_bool persistent)
151151
{
152152
DBG_ENTER("mysqlnd_error_info_init");
@@ -155,7 +155,7 @@ mysqlnd_error_info_init(MYSQLND_ERROR_INFO * const info, const zend_bool persist
155155

156156
zend_llist_init(&info->error_list, sizeof(MYSQLND_ERROR_LIST_ELEMENT), (llist_dtor_func_t) mysqlnd_error_list_pdtor, persistent);
157157
info->persistent = persistent;
158-
DBG_RETURN(PASS);
158+
DBG_VOID_RETURN;
159159
}
160160
/* }}} */
161161

ext/mysqlnd/mysqlnd_connection.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void mysqlnd_upsert_status_init(MYSQLND_UPSERT_STATUS * const upsert_status);
6565
}
6666

6767

68-
PHPAPI enum_func_status mysqlnd_error_info_init(MYSQLND_ERROR_INFO * const info, const zend_bool persistent);
68+
PHPAPI void mysqlnd_error_info_init(MYSQLND_ERROR_INFO * const info, const zend_bool persistent);
6969
PHPAPI void mysqlnd_error_info_free_contents(MYSQLND_ERROR_INFO * const info);
7070

7171
#define GET_CONNECTION_STATE(state_struct) (state_struct)->m->get((state_struct))

ext/mysqlnd/mysqlnd_driver.c

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,7 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_connection)(MYSQLND_CLASS_METHODS_TYP
116116
new_object->m = mysqlnd_conn_get_methods();
117117
data = new_object->data;
118118

119-
if (FAIL == mysqlnd_error_info_init(&data->error_info_impl, persistent)) {
120-
new_object->m->dtor(new_object);
121-
DBG_RETURN(NULL);
122-
}
119+
mysqlnd_error_info_init(&data->error_info_impl, persistent);
123120
data->error_info = &data->error_info_impl;
124121

125122
data->options = &(data->options_impl);
@@ -191,44 +188,29 @@ MYSQLND_METHOD(mysqlnd_object_factory, get_prepared_statement)(MYSQLND_CONN_DATA
191188
MYSQLND_STMT_DATA * stmt = NULL;
192189

193190
DBG_ENTER("mysqlnd_object_factory::get_prepared_statement");
194-
do {
195-
ret->m = mysqlnd_stmt_get_methods();
191+
ret->m = mysqlnd_stmt_get_methods();
196192

197-
stmt = ret->data = mnd_ecalloc(1, sizeof(MYSQLND_STMT_DATA));
198-
DBG_INF_FMT("stmt=%p", stmt);
193+
stmt = ret->data = mnd_ecalloc(1, sizeof(MYSQLND_STMT_DATA));
194+
DBG_INF_FMT("stmt=%p", stmt);
199195

200-
if (FAIL == mysqlnd_error_info_init(&stmt->error_info_impl, 0)) {
201-
break;
202-
}
203-
stmt->error_info = &stmt->error_info_impl;
204-
205-
mysqlnd_upsert_status_init(&stmt->upsert_status_impl);
206-
stmt->upsert_status = &(stmt->upsert_status_impl);
207-
stmt->state = MYSQLND_STMT_INITTED;
208-
stmt->execute_cmd_buffer.length = 4096;
209-
stmt->execute_cmd_buffer.buffer = mnd_emalloc(stmt->execute_cmd_buffer.length);
210-
if (!stmt->execute_cmd_buffer.buffer) {
211-
break;
212-
}
196+
mysqlnd_error_info_init(&stmt->error_info_impl, 0);
197+
stmt->error_info = &stmt->error_info_impl;
213198

214-
stmt->prefetch_rows = MYSQLND_DEFAULT_PREFETCH_ROWS;
199+
mysqlnd_upsert_status_init(&stmt->upsert_status_impl);
200+
stmt->upsert_status = &(stmt->upsert_status_impl);
201+
stmt->state = MYSQLND_STMT_INITTED;
202+
stmt->execute_cmd_buffer.length = 4096;
203+
stmt->execute_cmd_buffer.buffer = mnd_emalloc(stmt->execute_cmd_buffer.length);
204+
stmt->prefetch_rows = MYSQLND_DEFAULT_PREFETCH_ROWS;
215205

216-
/*
217-
Mark that we reference the connection, thus it won't be
218-
be destructed till there is open statements. The last statement
219-
or normal query result will close it then.
220-
*/
221-
stmt->conn = conn->m->get_reference(conn);
206+
/*
207+
Mark that we reference the connection, thus it won't be
208+
be destructed till there is open statements. The last statement
209+
or normal query result will close it then.
210+
*/
211+
stmt->conn = conn->m->get_reference(conn);
222212

223-
DBG_RETURN(ret);
224-
} while (0);
225-
226-
SET_OOM_ERROR(conn->error_info);
227-
if (ret) {
228-
ret->m->dtor(ret, TRUE);
229-
ret = NULL;
230-
}
231-
DBG_RETURN(NULL);
213+
DBG_RETURN(ret);
232214
}
233215
/* }}} */
234216

ext/mysqlnd/mysqlnd_result.c

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1388,17 +1388,9 @@ MYSQLND_METHOD(mysqlnd_res, store_result)(MYSQLND_RES * result,
13881388

13891389
if (flags & MYSQLND_STORE_NO_COPY) {
13901390
result->stored_data = (MYSQLND_RES_BUFFERED *) mysqlnd_result_buffered_zval_init(result, result->field_count, flags & MYSQLND_STORE_PS);
1391-
if (!result->stored_data) {
1392-
SET_OOM_ERROR(conn->error_info);
1393-
DBG_RETURN(NULL);
1394-
}
13951391
row_buffers = &result->stored_data->row_buffers;
13961392
} else if (flags & MYSQLND_STORE_COPY) {
13971393
result->stored_data = (MYSQLND_RES_BUFFERED *) mysqlnd_result_buffered_c_init(result, result->field_count, flags & MYSQLND_STORE_PS);
1398-
if (!result->stored_data) {
1399-
SET_OOM_ERROR(conn->error_info);
1400-
DBG_RETURN(NULL);
1401-
}
14021394
row_buffers = &result->stored_data->row_buffers;
14031395
}
14041396
ret = result->m.store_result_fetch_data(conn, result, result->meta, row_buffers, flags & MYSQLND_STORE_PS);
@@ -1965,9 +1957,7 @@ mysqlnd_result_buffered_zval_init(MYSQLND_RES * result, const unsigned int field
19651957
ret = pool->get_chunk(pool, alloc_size);
19661958
memset(ret, 0, alloc_size);
19671959

1968-
if (FAIL == mysqlnd_error_info_init(&ret->error_info, 0)) {
1969-
DBG_RETURN(NULL);
1970-
}
1960+
mysqlnd_error_info_init(&ret->error_info, /* persistent */ 0);
19711961

19721962
ret->lengths = pool->get_chunk(pool, field_count * sizeof(size_t));
19731963
memset(ret->lengths, 0, field_count * sizeof(size_t));
@@ -2006,9 +1996,7 @@ mysqlnd_result_buffered_c_init(MYSQLND_RES * result, const unsigned int field_co
20061996
ret = pool->get_chunk(pool, alloc_size);
20071997
memset(ret, 0, alloc_size);
20081998

2009-
if (FAIL == mysqlnd_error_info_init(&ret->error_info, 0)) {
2010-
DBG_RETURN(NULL);
2011-
}
1999+
mysqlnd_error_info_init(&ret->error_info, /* persistent */ 0);
20122000

20132001
ret->lengths = pool->get_chunk(pool, field_count * sizeof(size_t));
20142002
memset(ret->lengths, 0, field_count * sizeof(size_t));

0 commit comments

Comments
 (0)