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

Reply via email to