https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79839

            Bug ID: 79839
           Summary: malloc(0) returns 0 on AIX even with
                    _LINUX_SOURCE_COMPAT
           Product: gcc
           Version: 4.8.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jaideepbajwa at hotmail dot com
  Target Milestone: ---
            Target: aix

malloc(0) returning 0 is expected behaviour on AIX but compiling with
-D_LINUX_SOURCE_COMPAT, malloc(0) should return a valid pointer. As per:
https://www.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.basetrf1/malloc.html
 
It doesn't work for c++ program which includes <cstdlib>. In the header it
states:
// Get rid of those macros defined in <stdlib.h> in lieu of real functions.
...
#undef malloc

The above seems to be causing the issue and resetting the behaviour of
-D_LINUX_SOURCE_COMPAT.

Code to reproduce:
>cat malloc.cpp
#include <stdio.h>
//#include <stdlib.h>  //<-- Works this stdlib
#include <cstdlib>
int main() {
  printf("%p \n", malloc(0));
  return 0;
}

>g++ malloc.cpp -D_LINUX_SOURCE_COMPAT
>./a.out
0

Reply via email to