Skip to Content.
Sympa Menu

freetds - Re: [freetds] SQLPutData() with a size of zero

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • 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.

Top of Page