Re: cvs: php-src /ext/pdo_sqlite sqlite_statement.c

From: Date: Wed, 01 Apr 2009 14:35:55 +0000
Subject: Re: cvs: php-src /ext/pdo_sqlite sqlite_statement.c
References: 1 2  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-56851@lists.php.net to get a copy of this message
2009/4/1 Scott MacVicar <scottmac@php.net>: > It's valid to discard the const qualifier, add_assoc_string runs > estrndup to take a copy of the return value anyway. > > You've also made the code less readable and introduced a memory leak for > str. > > So unless I've missed something can you revert this please. done. Used explicit cast to (char *) instead. > Scott > > Alexey Zakhlestin wrote: >> indeyets              Wed Apr  1 11:31:54 2009 UTC >> >>   Modified files: >>     /php-src/ext/pdo_sqlite   sqlite_statement.c >>   Log: >>   const pointer was used in non-const context >> >> >> http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_sqlite/sqlite_statement.c?r1=1.29&r2=1.30&diff_format=u >> Index: php-src/ext/pdo_sqlite/sqlite_statement.c >> diff -u php-src/ext/pdo_sqlite/sqlite_statement.c:1.29 >> php-src/ext/pdo_sqlite/sqlite_statement.c:1.30 >> --- php-src/ext/pdo_sqlite/sqlite_statement.c:1.29    Tue Mar 10 23:39:31 2009 >> +++ php-src/ext/pdo_sqlite/sqlite_statement.c Wed Apr  1 11:31:54 2009 >> @@ -16,7 +16,7 @@ >>    +----------------------------------------------------------------------+ >>  */ >> >> -/* $Id: sqlite_statement.c,v 1.29 2009/03/10 23:39:31 helly Exp $ */ >> +/* $Id: sqlite_statement.c,v 1.30 2009/04/01 11:31:54 indeyets Exp $ */ >> >>  #ifdef HAVE_CONFIG_H >>  #include "config.h" >> @@ -282,6 +282,8 @@ >>  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 @@ >>                       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 >> >> > -- Alexey Zakhlestin http://www.milkfarmsoft.com/

« previous php.cvs (#56851) next »