X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcontrol%2Frepeat.c;h=286cc347098e397c40ce587b346ab5922d494a2e;hb=6a856ba6fc06843fd02886087c769247de4d08f0;hp=200b6bce80dd307dcc07a08ae01c0cd6a2614b50;hpb=8381768f3394a907c621cb9acbb77b83f5cd4875;p=pspp-builds.git diff --git a/src/language/control/repeat.c b/src/language/control/repeat.c index 200b6bce..286cc347 100644 --- a/src/language/control/repeat.c +++ b/src/language/control/repeat.c @@ -139,7 +139,7 @@ cmd_do_repeat (struct lexer *lexer, struct dataset *ds) block->parent.location = do_repeat_location; if (!ll_is_empty (&block->lines)) - getl_include_source (&block->parent); + getl_include_source (lex_get_source_stream (lexer), &block->parent); else pool_destroy (block->pool); @@ -310,8 +310,8 @@ parse_lines (struct lexer *lexer, struct repeat_block *block) ds_init_string (&text, lex_entire_line_ds (lexer)); /* Record file name. */ - cur_file_name = getl_source_name (); - if (cur_file_name != NULL && + cur_file_name = getl_source_name (lex_get_source_stream (lexer)); + if (cur_file_name != NULL && (previous_file_name == NULL || !strcmp (cur_file_name, previous_file_name))) previous_file_name = pool_strdup (block->pool, cur_file_name); @@ -319,7 +319,7 @@ parse_lines (struct lexer *lexer, struct repeat_block *block) /* Create a line structure. */ line = pool_alloc (block->pool, sizeof *line); line->file_name = previous_file_name; - line->line_number = getl_source_location (); + line->line_number = getl_source_location (lex_get_source_stream (lexer)); ss_alloc_substring_pool (&line->text, ds_ss (&text), block->pool); line->syntax = syntax; @@ -329,11 +329,12 @@ parse_lines (struct lexer *lexer, struct repeat_block *block) &command_ends_before_line, &command_ends_after_line); if (recognize_do_repeat (ds_ss (&text))) - nesting_level++; + nesting_level++; else if (recognize_end_repeat (ds_ss (&text), &block->print) - && nesting_level-- == 0) + && nesting_level-- == 0) { lex_discard_line (lexer); + ds_destroy (&text); return true; } ds_destroy (&text); @@ -348,7 +349,7 @@ static void create_vars (struct repeat_block *block) { struct repeat_macro *macro; - + ll_for_each (macro, struct repeat_macro, ll, &block->macros) if (macro->type == VAR_NAMES) {