X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fsave.c;h=da7334949a7179b748c650b58e9e653fd5ca0278;hb=91392754bf1d241cd6913c728268caf18eae1485;hp=4fd98e7c9f70ac7518b668bc42059ae57295466f;hpb=1b64697e4e8a85ff8f11f5c05de71687dc5ad2e2;p=sbcl.git diff --git a/src/runtime/save.c b/src/runtime/save.c index 4fd98e7..da73349 100644 --- a/src/runtime/save.c +++ b/src/runtime/save.c @@ -102,8 +102,7 @@ save(char *filename, lispobj init_function) printf("done]\n"); fflush(stdout); - /* (Now we can actually start copying ourselves into the - * output file.) */ + /* (Now we can actually start copying ourselves into the output file.) */ printf("[saving current Lisp image into %s:\n", filename); fflush(stdout); @@ -114,9 +113,22 @@ save(char *filename, lispobj init_function) putw(3, file); putw(SBCL_CORE_VERSION_INTEGER, file); - putw(NEW_DIRECTORY_CORE_ENTRY_TYPE_CODE, file); - putw((5*3)+2, file); + putw(BUILD_ID_CORE_ENTRY_TYPE_CODE, file); + putw(/* (We're writing the word count of the entry here, and the 2 + * term is one word for the leading BUILD_ID_CORE_ENTRY_TYPE_CODE + * word and one word where we store the count itself.) */ + 2 + strlen(build_id), + file); + { + char *p; + for (p = build_id; *p; ++p) + putw(*p, file); + } + putw(NEW_DIRECTORY_CORE_ENTRY_TYPE_CODE, file); + putw(/* (word count = 3 spaces described by 5 words each, plus the + * entry type code, plus this count itself) */ + (5*3)+2, file); output_space(file, READ_ONLY_CORE_SPACE_ID, (lispobj *)READ_ONLY_SPACE_START,