FreeBSD Bugzilla – Attachment 37518 Details for
Bug 59695
[PATCH] devel/gmake: add two patches to avoid core dumps
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
gmake-3.80_2.patch
gmake-3.80_2.patch (text/plain), 7.81 KB, created by
Sergey Matveychuk
on 2003-11-26 06:20:04 UTC
(
hide
)
Description:
gmake-3.80_2.patch
Filename:
MIME Type:
Creator:
Sergey Matveychuk
Created:
2003-11-26 06:20:04 UTC
Size:
7.81 KB
patch
obsolete
>diff -ruN --exclude=CVS /usr/ports/devel/gmake.orig/Makefile /usr/ports/devel/gmake/Makefile >--- /usr/ports/devel/gmake.orig/Makefile Wed Nov 26 08:53:03 2003 >+++ /usr/ports/devel/gmake/Makefile Wed Nov 26 09:02:42 2003 >@@ -7,7 +7,7 @@ > > PORTNAME= gmake > PORTVERSION= 3.80 >-PORTREVISION= 1 >+PORTREVISION= 2 > CATEGORIES= devel > MASTER_SITES= ${MASTER_SITE_GNU} > MASTER_SITE_SUBDIR= make >@@ -35,6 +35,7 @@ > CONFIGURE_ENV+= MAKEINFO="/usr/bin/makeinfo --no-split" > > MAN1= gmake.1 >+INFO= make > > .ifdef USE_GMAKE > .error You have `USE_GMAKE' variable defined either in environment or in make(1) arguments. Please undefine and try again. >diff -ruN --exclude=CVS /usr/ports/devel/gmake.orig/files/patch-eval_conditional /usr/ports/devel/gmake/files/patch-eval_conditional >--- /usr/ports/devel/gmake.orig/files/patch-eval_conditional Thu Jan 1 03:00:00 1970 >+++ /usr/ports/devel/gmake/files/patch-eval_conditional Wed Nov 26 08:53:29 2003 >@@ -0,0 +1,150 @@ >+Index: read.c >+=================================================================== >+RCS file: /cvsroot/make/make/read.c,v >+retrieving revision 1.124 >+diff -u -B -b -r1.124 read.c >+--- read.c 14 Oct 2002 21:54:04 -0000 1.124 >++++ read.c 25 Oct 2002 21:17:42 -0000 >+@@ -272,6 +272,34 @@ >+ return read_makefiles; >+ } >+ >++/* Install a new conditional and return the previous one. */ >++ >++static struct conditionals * >++install_conditionals (struct conditionals *new) >++{ >++ struct conditionals *save = conditionals; >++ >++ bzero ((char *) new, sizeof (*new)); >++ conditionals = new; >++ >++ return save; >++} >++ >++/* Free the current conditionals and reinstate a saved one. */ >++ >++static void >++restore_conditionals (struct conditionals *saved) >++{ >++ /* Free any space allocated by conditional_line. */ >++ if (conditionals->ignoring) >++ free (conditionals->ignoring); >++ if (conditionals->seen_else) >++ free (conditionals->seen_else); >++ >++ /* Restore state. */ >++ conditionals = saved; >++} >++ >+ static int >+ eval_makefile (char *filename, int flags) >+ { >+@@ -388,6 +416,8 @@ >+ eval_buffer (char *buffer) >+ { >+ struct ebuffer ebuf; >++ struct conditionals *saved; >++ struct conditionals new; >+ const struct floc *curfile; >+ int r; >+ >+@@ -402,8 +432,12 @@ >+ curfile = reading_file; >+ reading_file = &ebuf.floc; >+ >++ saved = install_conditionals (&new); >++ >+ r = eval (&ebuf, 1); >+ >++ restore_conditionals (saved); >++ >+ reading_file = curfile; >+ >+ return r; >+@@ -412,13 +446,8 @@ >+ >+ /* Read file FILENAME as a makefile and add its contents to the data base. >+ >+- SET_DEFAULT is true if we are allowed to set the default goal. >+- >+- FILENAME is added to the `read_makefiles' chain. >++ SET_DEFAULT is true if we are allowed to set the default goal. */ >+ >+- Returns 0 if a file was not found or not read. >+- Returns 1 if FILENAME was found and read. >+- Returns 2 if FILENAME was read, and we kept a reference (don't free it). */ >+ >+ static int >+ eval (struct ebuffer *ebuf, int set_default) >+@@ -782,9 +811,7 @@ >+ >+ /* Save the state of conditionals and start >+ the included makefile with a clean slate. */ >+- save = conditionals; >+- bzero ((char *) &new_conditionals, sizeof new_conditionals); >+- conditionals = &new_conditionals; >++ save = install_conditionals (&new_conditionals); >+ >+ /* Record the rules that are waiting so they will determine >+ the default goal before those in the included makefile. */ >+@@ -810,14 +837,8 @@ >+ } >+ } >+ >+- /* Free any space allocated by conditional_line. */ >+- if (conditionals->ignoring) >+- free (conditionals->ignoring); >+- if (conditionals->seen_else) >+- free (conditionals->seen_else); >+- >+- /* Restore state. */ >+- conditionals = save; >++ /* Restore conditional state. */ >++ restore_conditionals (save); >+ >+ goto rule_complete; >+ } >+Index: tests/scripts/functions/eval >+=================================================================== >+RCS file: /cvsroot/make/make/tests/scripts/functions/eval,v >+retrieving revision 1.1 >+diff -u -B -b -r1.1 eval >+--- tests/scripts/functions/eval 8 Jul 2002 02:26:48 -0000 1.1 >++++ tests/scripts/functions/eval 25 Oct 2002 21:17:42 -0000 >+@@ -57,4 +57,35 @@ >+ >+ &compare_output($answer,&get_logfile(1)); >+ >++# Test to make sure eval'ing inside conditionals works properly >++ >++$makefile3 = &get_tmpfile; >++ >++open(MAKEFILE,"> $makefile3"); >++ >++print MAKEFILE <<'EOF'; >++FOO = foo >++ >++all:: ; @echo it >++ >++define Y >++ all:: ; @echo worked >++endef >++ >++ifdef BAR >++$(eval $(Y)) >++endif >++ >++EOF >++ >++close(MAKEFILE); >++ >++&run_make_with_options($makefile3, "", &get_logfile); >++$answer = "it\n"; >++&compare_output($answer,&get_logfile(1)); >++ >++&run_make_with_options($makefile3, "BAR=1", &get_logfile); >++$answer = "it\nworked\n"; >++&compare_output($answer,&get_logfile(1)); >++ >+ 1; >diff -ruN --exclude=CVS /usr/ports/devel/gmake.orig/files/patch-eval_crash /usr/ports/devel/gmake/files/patch-eval_crash >--- /usr/ports/devel/gmake.orig/files/patch-eval_crash Thu Jan 1 03:00:00 1970 >+++ /usr/ports/devel/gmake/files/patch-eval_crash Wed Nov 26 08:53:29 2003 >@@ -0,0 +1,77 @@ >+Index: variable.h >+=================================================================== >+RCS file: /cvsroot/make/make/variable.h,v >+retrieving revision 1.24 >+diff -u -B -b -r1.24 variable.h >+--- variable.h 8 Aug 2002 00:11:19 -0000 1.24 >++++ variable.h 25 Oct 2002 21:37:32 -0000 >+@@ -107,6 +107,8 @@ >+ extern char *expand_argument PARAMS ((char *str, char *end)); >+ extern char *variable_expand_string PARAMS ((char *line, char *string, >+ long length)); >++extern void install_variable_buffer PARAMS ((char **bufp, unsigned int *lenp)); >++extern void restore_variable_buffer PARAMS ((char *buf, unsigned int len)); >+ >+ /* function.c */ >+ extern int handle_function PARAMS ((char **op, char **stringp)); >+Index: expand.c >+=================================================================== >+RCS file: /cvsroot/make/make/expand.c,v >+retrieving revision 1.33 >+diff -u -B -b -r1.33 expand.c >+--- expand.c 14 Oct 2002 21:54:04 -0000 1.33 >++++ expand.c 25 Oct 2002 21:37:32 -0000 >+@@ -545,3 +545,28 @@ >+ >+ return value; >+ } >++ >++/* Install a new variable_buffer context, returning the current one for >++ safe-keeping. */ >++ >++void >++install_variable_buffer (char **bufp, unsigned int *lenp) >++{ >++ *bufp = variable_buffer; >++ *lenp = variable_buffer_length; >++ >++ variable_buffer = 0; >++ initialize_variable_output (); >++} >++ >++/* Restore a previously-saved variable_buffer setting (free the current one). >++ */ >++ >++void >++restore_variable_buffer (char *buf, unsigned int len) >++{ >++ free (variable_buffer); >++ >++ variable_buffer = buf; >++ variable_buffer_length = len; >++} >+Index: function.c >+=================================================================== >+RCS file: /cvsroot/make/make/function.c,v >+retrieving revision 1.71 >+diff -u -B -b -r1.71 function.c >+--- function.c 14 Oct 2002 21:54:04 -0000 1.71 >++++ function.c 25 Oct 2002 21:37:32 -0000 >+@@ -1196,7 +1196,17 @@ >+ static char * >+ func_eval (char *o, char **argv, const char *funcname) >+ { >++ char *buf; >++ unsigned int len; >++ >++ /* Eval the buffer. Pop the current variable buffer setting so that the >++ eval'd code can use its own without conflicting. */ >++ >++ install_variable_buffer (&buf, &len); >++ >+ eval_buffer (argv[0]); >++ >++ restore_variable_buffer (buf, len); >+ >+ return o; >+ } >diff -ruN --exclude=CVS /usr/ports/devel/gmake.orig/pkg-plist /usr/ports/devel/gmake/pkg-plist >--- /usr/ports/devel/gmake.orig/pkg-plist Wed Nov 26 08:53:03 2003 >+++ /usr/ports/devel/gmake/pkg-plist Wed Nov 26 09:00:30 2003 >@@ -1,7 +1,4 @@ > bin/gmake >-@unexec install-info --delete %D/info/make.info %D/info/dir >-info/make.info >-@exec install-info %D/info/make.info %D/info/dir > %%NLS%%share/locale/da/LC_MESSAGES/make.mo > %%NLS%%share/locale/de/LC_MESSAGES/make.mo > %%NLS%%share/locale/es/LC_MESSAGES/make.mo
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 59695
: 37518