diff options
author | mongo <andmarti@gmail.com> | 2023-06-01 15:36:42 -0300 |
---|---|---|
committer | mongo <andmarti@gmail.com> | 2023-06-01 15:36:42 -0300 |
commit | b1ba526d0be4b4ceff13b4d89ebfcaba954d26a3 (patch) | |
tree | e51f844475c39f216efd3cfbc12533b1bec09d8f | |
parent | 0b7d465aca59d2f0c761bc1912f52e3c0864bf83 (diff) |
Avoid malloc roman struct everytime loading is made. Added transpose example file
-rw-r--r-- | examples/sc/transpose.sc | 27 | ||||
-rw-r--r-- | src/file.c | 15 |
2 files changed, 37 insertions, 5 deletions
diff --git a/examples/sc/transpose.sc b/examples/sc/transpose.sc new file mode 100644 index 0000000..219050d --- /dev/null +++ b/examples/sc/transpose.sc @@ -0,0 +1,27 @@ +# This data file was generated by the Spreadsheet Calculator Improvised (sc-im) +# You almost certainly shouldn't edit it. + +newsheet "Sheet1" +movetosheet "Sheet1" +offscr_sc_cols 0 +offscr_sc_rows 0 +nb_frozen_rows 0 +nb_frozen_cols 0 +nb_frozen_screenrows 0 +nb_frozen_screencols 0 +let A0 = 9-H0 +let B0 = 4 +let D0 = 9 +let E0 = 8 +let F0 = 7 +let H0 = 8 +let A1 = 2 +let B1 = 5 +let D1 = 6 +let E1 = 5 +let F1 = 4 +let A2 = 3 +let B2 = 6 +label B4 = "algo" +goto B4 +movetosheet "Sheet1" @@ -2214,15 +2214,20 @@ void readfile_argv(int argc, char ** argv) { */ void load_file(char * file) { if (file == NULL || file[0] == '\0') return; - struct roman * roman = calloc(1, sizeof(struct roman)); + // Do not calloc a new roman struct everytime. See 783 PR discussion. + // use the one allocated when loading rc file. + struct roman * roman = session->cur_doc; + if (roman == NULL) { + roman = calloc(1, sizeof(struct roman)); + // save roman inside session + INSERT(roman, (session->first_doc), (session->last_doc), next, prev); + session->cur_doc = roman; // important: set cur_doc! + } + roman->name = ! strlen(file) ? NULL : strdup(file); roman->first_sh = NULL; roman->cur_sh = NULL; - // save roman inside session - INSERT(roman, (session->first_doc), (session->last_doc), next, prev); - session->cur_doc = roman; // important: set cur_doc! - // malloc a clean sheet // to make old sc file loading backwards compatible, mark it as is_allocated roman->cur_sh = roman->first_sh = new_sheet(roman, "Sheet1"); |