freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
- From: "James K. Lowden" <jklowden AT freetds.org>
- To: freetds AT lists.ibiblio.org
- Subject: Re: [freetds] SQLPutData() with a size of zero
- Date: Mon, 11 Mar 2013 12:51:33 -0400
On Mon, 11 Mar 2013 16:36:52 +0100
Sebastien FLAESCH <sf AT 4js.com> wrote:
> p = (TDS_CHAR *) malloc(len);
> }
> if (!p) {
> odbc_errs_add(&stmt->errs, "HY001",
> NULL); /* Memory allocation error */ return SQL_ERROR;
> }
>
>
> and here malloc(0) returns zero (AIX 6.1)...
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.basetechref/doc/basetrf1/malloc.htm#malloc
http://pubs.opengroup.org/onlinepubs/009695399/functions/malloc.html
Huh. Learn something new every day. I thought malloc could return
NULL only for failure. But the standard says,
"If size is 0, either a null pointer or a unique pointer that
can be successfully passed to free() shall be returned. "
It looks like you want _LINUX_SOURCE_COMPAT. Either that, or change
the test to
if( len && !p )
While you're at it, you can remove the casts to to malloc. We got rid
of them once, but they keep regenerating.
Thanks for pointing this out, no pun intended.
--jkl
- Re: [freetds] SQLPutData() with a size of zero, James K. Lowden, 03/11/2013
Archive powered by MHonArc 2.6.24.