home *** CD-ROM | disk | FTP | other *** search
-
- #include <stdio.h>
- #include <signal.h>
- #include <setjmp.h>
-
- #ifdef __STDC__
- # include <stdlib.h>
- # include <memory.h>
- #else
- extern char *malloc();
- extern char *calloc();
- extern char *realloc();
- extern void free();
- extern void abort();
- extern char *memset();
- extern void exit();
- #endif
-
- #include "malloc.h"
-
- jmp_buf jb;
-
-
- void
- sigiot()
- {
- signal(SIGIOT, sigiot);
- MemChain();
- longjmp(jb, 1);
- }
-
-
- main()
- {
- char *ptr;
-
- signal(SIGIOT, sigiot);
-
- if (!setjmp(jb)) {
- ptr = (char *) malloc(10);
- (void) fprintf(stderr, "1. Malloc 10 ok\n");
- }
- else
- (void) fprintf(stderr, "1. Malloc 10 failed\n");
-
- if (!setjmp(jb)) {
- malloc(0);
- (void) fprintf(stderr, "2. Malloc 0 failed\n");
- }
- else
- (void) fprintf(stderr, "2. Malloc 0 ok\n");
-
- if (!setjmp(jb)) {
- realloc(0, 20);
- (void) fprintf(stderr, "3. Realloc null failed\n");
- }
- else
- (void) fprintf(stderr, "3. Realloc null ok\n");
-
- if (!setjmp(jb)) {
- realloc(ptr, 0);
- (void) fprintf(stderr, "4. Realloc 0 failed\n");
- }
- else
- (void) fprintf(stderr, "4. Realloc 0 ok\n");
-
- if (!setjmp(jb)) {
- ptr = (char *) realloc(ptr, 40);
- (void) fprintf(stderr, "5. Realloc valid ok\n");
- }
- else
- (void) fprintf(stderr, "5. Realloc valid failed\n");
-
- if (!setjmp(jb)) {
- ptr = (char *) realloc(20, 40);
- (void) fprintf(stderr, "6. Realloc invalid failed\n");
- }
- else
- (void) fprintf(stderr, "6. Realloc invalid ok\n");
-
- if (!setjmp(jb)) {
- free(0);
- (void) fprintf(stderr, "7. Free null failed\n");
- }
- else
- (void) fprintf(stderr, "7. Free null ok\n");
-
- if (!setjmp(jb)) {
- free(ptr);
- (void) fprintf(stderr, "8. Free valid ok\n");
- }
- else
- (void) fprintf(stderr, "8. Free valid failed\n");
-
- if (!setjmp(jb)) {
- free(20);
- (void) fprintf(stderr, "9. Free invalid failed\n");
- }
- else
- (void) fprintf(stderr, "9. Free invalid ok\n");
-
- if (!setjmp(jb)) {
- free(ptr);
- (void) fprintf(stderr, "10. Free freed failed\n");
- }
- else
- (void) fprintf(stderr, "10. Free freed ok\n");
-
- if (!setjmp(jb)) {
- realloc(ptr, 20);
- (void) fprintf(stderr, "11. Realloc freed failed\n");
- }
- else
- (void) fprintf(stderr, "11. Realloc freed ok\n");
- exit(0);
- }
-
-