unsigned long int lazy_serial;
/* When the user executes a number of snippets of syntax in a
- row, none of which read from the active file, the GUI becomes
+ row, none of which read from the active dataset, the GUI becomes
progressively less responsive. The reason is that each syntax
- execution encapsulates the active file data in another
+ execution encapsulates the active dataset data in another
datasheet layer. The cumulative effect of having a number of
layers of datasheets wastes time and space.
break;
}
- lex_destroy (lexer);
- psppire_set_lexer (NULL);
-
proc_execute (the_dataset);
psppire_dict_replace_dictionary (the_data_store->dict,
if (!lazy_casereader_destroy (reader, lazy_serial))
psppire_data_store_set_reader (the_data_store, reader);
+ /* Destroy the lexer only after obtaining the dataset, because the dataset
+ might depend on the lexer, if the casereader specifies inline data. (In
+ such a case then we'll always get an error message--the inline data is
+ missing, otherwise it would have been parsed in the loop above.) */
+ lex_destroy (lexer);
+ psppire_set_lexer (NULL);
+
output_flush ();
return retval;