summaryrefslogtreecommitdiff
path: root/ext/pdo_sqlite/sqlite_statement.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pdo_sqlite/sqlite_statement.c')
-rw-r--r--ext/pdo_sqlite/sqlite_statement.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/ext/pdo_sqlite/sqlite_statement.c b/ext/pdo_sqlite/sqlite_statement.c
index 63598901a0..eca6845d25 100644
--- a/ext/pdo_sqlite/sqlite_statement.c
+++ b/ext/pdo_sqlite/sqlite_statement.c
@@ -282,6 +282,8 @@ static int pdo_sqlite_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsi
static int pdo_sqlite_stmt_col_meta(pdo_stmt_t *stmt, long colno, zval *return_value TSRMLS_DC)
{
pdo_sqlite_stmt *S = (pdo_sqlite_stmt*)stmt->driver_data;
+ const char *_str;
+ size_t _str_len;
char *str;
zval *flags;
@@ -318,14 +320,20 @@ static int pdo_sqlite_stmt_col_meta(pdo_stmt_t *stmt, long colno, zval *return_v
break;
}
- str = (char*)sqlite3_column_decltype(S->stmt, colno);
- if (str) {
+ _str = sqlite3_column_decltype(S->stmt, colno);
+ _str_len = strlen(_str);
+ if (_str) {
+ str = emalloc(_str_len);
+ strcpy(str, _str);
add_assoc_string(return_value, "sqlite:decl_type", str, 1);
}
#ifdef SQLITE_ENABLE_COLUMN_METADATA
- str = sqlite3_column_table_name(S->stmt, colno);
- if (str) {
+ _str = sqlite3_column_table_name(S->stmt, colno);
+ _str_len = strlen(_str);
+ if (_str) {
+ str = emalloc(_str_len);
+ strcpy(str, _str);
add_assoc_string(return_value, "table", str, 1);
}
#endif