Confirmed. I found a second problem in the file too, very similar. Patch applied. > In this bit of code in src/pl/plpgsql/src/gram.y in the current CVS > sources, curname_def is defined as PLpgSQL_expr * but it is is > allocated the space required for a PLpgSQL_var. This looks like a > bug. > > Ian > > | decl_varname K_CURSOR decl_cursor_args decl_is_from >K_SELECT decl_cursor_query > { > PLpgSQL_var *new; > PLpgSQL_expr *curname_def; > char buf[1024]; > char *cp1; > char *cp2; > > plpgsql_ns_pop(); > > new = malloc(sizeof(PLpgSQL_var)); > memset(new, 0, sizeof(PLpgSQL_var)); > > curname_def = >malloc(sizeof(PLpgSQL_var)); > memset(curname_def, 0, >sizeof(PLpgSQL_var)); > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to [EMAIL PROTECTED] so that your > message can get through to the mailing list cleanly > -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Index: src/pl/plpgsql/src/gram.y =================================================================== RCS file: /home/projects/pgsql/cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v retrieving revision 1.22 diff -c -r1.22 gram.y *** src/pl/plpgsql/src/gram.y 2001/07/11 18:54:18 1.22 --- src/pl/plpgsql/src/gram.y 2001/07/12 01:15:05 *************** *** 332,338 **** { PLpgSQL_rec *new; ! new = malloc(sizeof(PLpgSQL_var)); new->dtype = PLPGSQL_DTYPE_REC; new->refname = $1.name; --- 332,338 ---- { PLpgSQL_rec *new; ! new = malloc(sizeof(PLpgSQL_rec)); new->dtype = PLPGSQL_DTYPE_REC; new->refname = $1.name; *************** *** 374,381 **** new = malloc(sizeof(PLpgSQL_var)); memset(new, 0, sizeof(PLpgSQL_var)); ! curname_def = malloc(sizeof(PLpgSQL_var)); ! memset(curname_def, 0, sizeof(PLpgSQL_var)); new->dtype = PLPGSQL_DTYPE_VAR; new->refname = $1.name; --- 374,381 ---- new = malloc(sizeof(PLpgSQL_var)); memset(new, 0, sizeof(PLpgSQL_var)); ! curname_def = malloc(sizeof(PLpgSQL_expr)); ! memset(curname_def, 0, sizeof(PLpgSQL_expr)); new->dtype = PLPGSQL_DTYPE_VAR; new->refname = $1.name;
---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster