1*10465441SEvalZero /* 2*10465441SEvalZero * memory.c 3*10465441SEvalZero * 4*10465441SEvalZero * Created on: 2010-11-17 5*10465441SEvalZero * Author: bernard 6*10465441SEvalZero */ 7*10465441SEvalZero #include <stdio.h> 8*10465441SEvalZero #include <stdlib.h> 9*10465441SEvalZero #include <finsh.h> 10*10465441SEvalZero #include <errno.h> 11*10465441SEvalZero 12*10465441SEvalZero static int errors = 0; merror(const char * msg)13*10465441SEvalZerostatic void merror(const char *msg) 14*10465441SEvalZero { 15*10465441SEvalZero ++errors; 16*10465441SEvalZero printf("Error: %s\n", msg); 17*10465441SEvalZero } 18*10465441SEvalZero libc_mem(void)19*10465441SEvalZeroint libc_mem(void) 20*10465441SEvalZero { 21*10465441SEvalZero void *p; 22*10465441SEvalZero int save; 23*10465441SEvalZero 24*10465441SEvalZero errno = 0; 25*10465441SEvalZero 26*10465441SEvalZero p = malloc(-1); 27*10465441SEvalZero save = errno; 28*10465441SEvalZero 29*10465441SEvalZero if (p != NULL) 30*10465441SEvalZero merror("malloc (-1) succeeded."); 31*10465441SEvalZero 32*10465441SEvalZero if (p == NULL && save != ENOMEM) 33*10465441SEvalZero merror("errno is not set correctly"); 34*10465441SEvalZero 35*10465441SEvalZero p = malloc(10); 36*10465441SEvalZero if (p == NULL) 37*10465441SEvalZero merror("malloc (10) failed."); 38*10465441SEvalZero 39*10465441SEvalZero /* realloc (p, 0) == free (p). */ 40*10465441SEvalZero p = realloc(p, 0); 41*10465441SEvalZero if (p != NULL) 42*10465441SEvalZero merror("realloc (p, 0) failed."); 43*10465441SEvalZero 44*10465441SEvalZero p = malloc(0); 45*10465441SEvalZero if (p == NULL) 46*10465441SEvalZero { 47*10465441SEvalZero printf("malloc(0) returns NULL\n"); 48*10465441SEvalZero } 49*10465441SEvalZero 50*10465441SEvalZero p = realloc(p, 0); 51*10465441SEvalZero if (p != NULL) 52*10465441SEvalZero merror("realloc (p, 0) failed."); 53*10465441SEvalZero 54*10465441SEvalZero return errors != 0; 55*10465441SEvalZero } 56*10465441SEvalZero FINSH_FUNCTION_EXPORT(libc_mem, memory test for libc); 57