1. realloc acts like malloc when ptr == NULL
2. no need to check for NULL before free
ok?
? cscope.out
Index: skeleton.c
===================================================================
RCS file: /cvs/src/usr.bin/yacc/skeleton.c,v
retrieving revision 1.35
diff -u -p -r1.35 skeleton.c
--- skeleton.c 16 Mar 2014 18:38:30 -0000 1.35
+++ skeleton.c 24 Dec 2015 17:34:02 -0000
@@ -137,16 +137,14 @@ char *body[] =
"#endif",
" if (newsize && YY_SIZE_MAX / newsize < sizeof *newss)",
" goto bail;",
- " newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :",
- " (short *)malloc(newsize * sizeof *newss); /* overflow check
above */",
+ " newss = realloc(yyss, newsize * sizeof(*newss)); /* overflow check
above */",
" if (newss == NULL)",
" goto bail;",
" yyss = newss;",
" yyssp = newss + sslen;",
" if (newsize && YY_SIZE_MAX / newsize < sizeof *newvs)",
" goto bail;",
- " newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)
:",
- " (YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check
above */",
+ " newvs = realloc(yyvs, newsize * sizeof(*newvs)); /* overflow check
above */",
" if (newvs == NULL)",
" goto bail;",
" yyvs = newvs;",
@@ -155,10 +153,8 @@ char *body[] =
" yysslim = yyss + newsize - 1;",
" return 0;",
"bail:",
- " if (yyss)",
- " free(yyss);",
- " if (yyvs)",
- " free(yyvs);",
+ " free(yyss);",
+ " free(yyvs);",
" yyss = yyssp = NULL;",
" yyvs = yyvsp = NULL;",
" yystacksize = 0;",
@@ -368,19 +364,15 @@ char *trailer[] =
"yyoverflow:",
" yyerror(\"yacc stack overflow\");",
"yyabort:",
- " if (yyss)",
- " free(yyss);",
- " if (yyvs)",
- " free(yyvs);",
+ " free(yyss);",
+ " free(yyvs);",
" yyss = yyssp = NULL;",
" yyvs = yyvsp = NULL;",
" yystacksize = 0;",
" return (1);",
"yyaccept:",
- " if (yyss)",
- " free(yyss);",
- " if (yyvs)",
- " free(yyvs);",
+ " free(yyss);",
+ " free(yyvs);",
" yyss = yyssp = NULL;",
" yyvs = yyvsp = NULL;",
" yystacksize = 0;",