summaryrefslogtreecommitdiff
path: root/ext/pdo/pdo.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pdo/pdo.c')
-rw-r--r--ext/pdo/pdo.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c
index a66596ee54..b3d999bed5 100644
--- a/ext/pdo/pdo.c
+++ b/ext/pdo/pdo.c
@@ -80,7 +80,7 @@ PHP_FUNCTION(pdo_drivers)
array_init(return_value);
ZEND_HASH_FOREACH_PTR(&pdo_driver_hash, pdriver) {
- add_next_index_stringl(return_value, (char*)pdriver->driver_name, pdriver->driver_name_len);
+ add_next_index_stringl(return_value, pdriver->driver_name, pdriver->driver_name_len);
} ZEND_HASH_FOREACH_END();
}
/* }}} */
@@ -115,7 +115,7 @@ zend_module_entry pdo_module_entry = {
ZEND_GET_MODULE(pdo)
#endif
-PDO_API int php_pdo_register_driver(const pdo_driver_t *driver) /* {{{ */
+PDO_API zend_result php_pdo_register_driver(const pdo_driver_t *driver) /* {{{ */
{
if (driver->api_version != PDO_DRIVER_API) {
zend_error(E_ERROR, "PDO: driver %s requires PDO API version " ZEND_ULONG_FMT "; this is PDO version %d",
@@ -127,7 +127,7 @@ PDO_API int php_pdo_register_driver(const pdo_driver_t *driver) /* {{{ */
return FAILURE; /* NOTREACHED */
}
- return zend_hash_str_add_ptr(&pdo_driver_hash, (char*)driver->driver_name, driver->driver_name_len, (void*)driver) != NULL ? SUCCESS : FAILURE;
+ return zend_hash_str_add_ptr(&pdo_driver_hash, driver->driver_name, driver->driver_name_len, (void*)driver) != NULL ? SUCCESS : FAILURE;
}
/* }}} */
@@ -137,13 +137,13 @@ PDO_API void php_pdo_unregister_driver(const pdo_driver_t *driver) /* {{{ */
return;
}
- zend_hash_str_del(&pdo_driver_hash, (char*)driver->driver_name, driver->driver_name_len);
+ zend_hash_str_del(&pdo_driver_hash, driver->driver_name, driver->driver_name_len);
}
/* }}} */
pdo_driver_t *pdo_find_driver(const char *name, int namelen) /* {{{ */
{
- return zend_hash_str_find_ptr(&pdo_driver_hash, (char*)name, namelen);
+ return zend_hash_str_find_ptr(&pdo_driver_hash, name, namelen);
}
/* }}} */
@@ -248,8 +248,9 @@ PDO_API int php_pdo_parse_data_source(const char *data_source, zend_ulong data_s
}
/* }}} */
+/* TODO Refactor */
static const char digit_vec[] = "0123456789";
-PDO_API char *php_pdo_int64_to_str(pdo_int64_t i64) /* {{{ */
+PDO_API zend_string *php_pdo_int64_to_str(int64_t i64) /* {{{ */
{
char buffer[65];
char outbuf[65] = "";
@@ -257,25 +258,23 @@ PDO_API char *php_pdo_int64_to_str(pdo_int64_t i64) /* {{{ */
zend_long long_val;
char *dst = outbuf;
+ if (i64 == 0) {
+ return ZSTR_CHAR('0');
+ }
+
if (i64 < 0) {
i64 = -i64;
*dst++ = '-';
}
- if (i64 == 0) {
- *dst++ = '0';
- *dst++ = '\0';
- return estrdup(outbuf);
- }
-
p = &buffer[sizeof(buffer)-1];
*p = '\0';
- while ((pdo_uint64_t)i64 > (pdo_uint64_t)ZEND_LONG_MAX) {
- pdo_uint64_t quo = (pdo_uint64_t)i64 / (unsigned int)10;
+ while ((uint64_t)i64 > (uint64_t)ZEND_LONG_MAX) {
+ uint64_t quo = (uint64_t)i64 / (unsigned int)10;
unsigned int rem = (unsigned int)(i64 - quo*10U);
*--p = digit_vec[rem];
- i64 = (pdo_int64_t)quo;
+ i64 = (int64_t)quo;
}
long_val = (zend_long)i64;
while (long_val != 0) {
@@ -286,7 +285,7 @@ PDO_API char *php_pdo_int64_to_str(pdo_int64_t i64) /* {{{ */
while ((*dst++ = *p++) != 0)
;
*dst = '\0';
- return estrdup(outbuf);
+ return zend_string_init(outbuf, strlen(outbuf), 0);
}
/* }}} */
@@ -304,7 +303,7 @@ PHP_MINIT_FUNCTION(pdo)
le_ppdo = zend_register_list_destructors_ex(NULL, php_pdo_pdbh_dtor,
"PDO persistent database", module_number);
- INIT_CLASS_ENTRY(ce, "PDOException", NULL);
+ INIT_CLASS_ENTRY(ce, "PDOException", class_PDOException_methods);
pdo_exception_ce = zend_register_internal_class_ex(&ce, spl_ce_RuntimeException);