Author: kjs Date: Tue Jan 6 05:36:23 2009 New Revision: 35031 Modified: trunk/compilers/pirc/src/main.c trunk/compilers/pirc/src/pircompunit.c Log: [pirc] no tempnam() function anymore; fix this later in a proper way. + fix a bug: .annotate can be first statement, in which case there's no instruction object in place. Just take the offset from lexer->codesize, which keeps track of this (and from which instructions take their offset as well). Modified: trunk/compilers/pirc/src/main.c ============================================================================== --- trunk/compilers/pirc/src/main.c (original) +++ trunk/compilers/pirc/src/main.c Tue Jan 6 05:36:23 2009 @@ -310,7 +310,7 @@ return 0; } else { - hdocoutfile = tmpnam("hdoc"); + hdocoutfile = "hdoctemp"; file = open_file(hdocoutfile, "w"); process_heredocs(interp, argv[0], file); fclose(file); Modified: trunk/compilers/pirc/src/pircompunit.c ============================================================================== --- trunk/compilers/pirc/src/pircompunit.c (original) +++ trunk/compilers/pirc/src/pircompunit.c Tue Jan 6 05:36:23 2009 @@ -2483,9 +2483,7 @@ =item C<void annotate(lexer_state * const lexer, char const * const key, constant * const value)> -Add a new annotation with key C<key> and value C<value>. This function assumes -that there's an instruction in place, as it will store a pointer to the current -instruction. +Add a new annotation with key C<key> and value C<value>. =cut @@ -2499,7 +2497,7 @@ ++lexer->num_annotations; /* keep track of number of annotations */ - ann->offset = CURRENT_INSTRUCTION(lexer)->offset; + ann->offset = lexer->codesize; /* store the annotation in a list, managed by the lexer * the list is circular linked, so that the order of annotations is preserved.