On Wed, Nov 24, 2010 at 6:49 PM, Stephen Blessing < stephen.bless...@datasplice.com> wrote:
> Hi SQLite folks, > > I ran cppcheck and got this error: > > [./PlugIns/SQLiteDataStore/SQLite/sqlite3.c:13028]:(error) Common realloc > mistake: "p" nulled but not freed upon failure. > This should be a "warning" not an "error" (is that a bug in cppcheck?) and in this case the warning is wrong. The SQLite code is correct as it stands. sqlite3MemRealloc() has the same semantics as realloc() and so the p pointer should definitely not be freed. > > /* > ** Like realloc(). Resize an allocation previously obtained from > ** sqlite3MemMalloc(). > ** > ** For this low-level interface, we know that pPrior!=0. Cases where > ** pPrior==0 while have been intercepted by higher-level routine and > ** redirected to xMalloc. Similarly, we know that nByte>0 becauses > ** cases where nByte<=0 will have been intercepted by higher-level > ** routines and redirected to xFree. > */ > static void *sqlite3MemRealloc(void *pPrior, int nByte){ > sqlite3_int64 *p = (sqlite3_int64*)pPrior; > assert( pPrior!=0 && nByte>0 ); > nByte = ROUND8(nByte); > p--; > (Line 13028) p = realloc(p, nByte+8 ); > if( p ){ > p[0] = nByte; > p++; > }else{ > testcase( sqlite3GlobalConfig.xLog!=0 ); > sqlite3_log(SQLITE_NOMEM, > "failed memory resize %u to %u bytes", > sqlite3MemSize(pPrior), nByte); > } > return (void*)p; > } > > Thanks and best regards, > > Stephen Blessing > Quality Assurance > DataSplice, LLC > Phone: 970-232-1647 > stephen.bless...@datasplice.com > For support issues please keep our team > in the loop and CC: supp...@datasplice.com > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > -- D. Richard Hipp d...@sqlite.org _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users