@@ -958,8 +958,8 @@ static void Set_Option_File(REBCNT field, REBYTE* src, REBOOL dir )
958
958
959
959
Init_Raw_Print (); // Low level output (Print)
960
960
961
- Print_Banner (rargs );
962
-
961
+ Print_Banner (rargs ); // Can cause early exit (-v)
962
+ PG_Boot_Phase = BOOT_STARTED ;
963
963
DOUT ("Level 1" );
964
964
Init_Char_Cases ();
965
965
Init_CRC (); // For word hashing
@@ -1040,32 +1040,37 @@ static void Set_Option_File(REBCNT field, REBYTE* src, REBOOL dir )
1040
1040
return ; // can happen when close button, shutdown, etc.
1041
1041
1042
1042
Free_Series (Task_Series );
1043
- Free_Series (Bind_Table );
1044
- Free_Series (PG_Word_Table .hashes );
1045
- Free_Series (PG_Word_Table .series );
1046
- Free_Series (PG_Word_Names );
1043
+ if (PG_Boot_Phase > BOOT_START ) {
1044
+ Free_Series (Bind_Table );
1045
+ Free_Series (PG_Word_Table .hashes );
1046
+ Free_Series (PG_Word_Table .series );
1047
+ Free_Series (PG_Word_Names );
1048
+ }
1047
1049
Free_Series (VAL_SERIES (ROOT_ROOT ));
1048
- Free_Series (VAL_SERIES (ROOT_SYSTEM ));
1049
- Free_Series (VAL_SERIES (ROOT_ERROBJ ));
1050
- Free_Series (VAL_SERIES (ROOT_STRINGS ));
1051
- Free_Series (VAL_SERIES (ROOT_TYPESETS ));
1052
- Free_Series (VAL_SERIES (ROOT_BOOT ));
1053
- Free_Series (VAL_SERIES (TASK_STACK ));
1054
- Free_Series (VAL_SERIES (TASK_BUF_EMIT ));
1055
- Free_Series (VAL_SERIES (TASK_BUF_WORDS ));
1056
- Free_Series (VAL_SERIES (TASK_BUF_UTF8 ));
1057
- Free_Series (VAL_SERIES (TASK_BUF_PRINT ));
1058
- Free_Series (VAL_SERIES (TASK_BUF_FORM ));
1059
- Free_Series (VAL_SERIES (TASK_BUF_MOLD ));
1060
- Free_Series (VAL_SERIES (TASK_MOLD_LOOP ));
1061
-
1050
+ if (PG_Boot_Phase >= BOOT_MEZZ ) {
1051
+ Free_Series (VAL_SERIES (ROOT_SYSTEM ));
1052
+ Free_Series (VAL_SERIES (ROOT_ERROBJ ));
1053
+ Free_Series (VAL_SERIES (ROOT_STRINGS ));
1054
+ Free_Series (VAL_SERIES (ROOT_TYPESETS ));
1055
+ Free_Series (VAL_SERIES (ROOT_BOOT ));
1056
+ Free_Series (VAL_SERIES (TASK_STACK ));
1057
+ Free_Series (VAL_SERIES (TASK_BUF_EMIT ));
1058
+ Free_Series (VAL_SERIES (TASK_BUF_WORDS ));
1059
+ Free_Series (VAL_SERIES (TASK_BUF_UTF8 ));
1060
+ Free_Series (VAL_SERIES (TASK_BUF_PRINT ));
1061
+ Free_Series (VAL_SERIES (TASK_BUF_FORM ));
1062
+ Free_Series (VAL_SERIES (TASK_BUF_MOLD ));
1063
+ Free_Series (VAL_SERIES (TASK_MOLD_LOOP ));
1064
+ }
1062
1065
Dispose_Memory ();
1063
- Dispose_Char_Cases ();
1064
- Dispose_Ports ();
1065
- Dispose_Mold ();
1066
- Dispose_CRC ();
1066
+ if (PG_Boot_Phase > BOOT_STARTED ) {
1067
+ Dispose_Char_Cases ();
1068
+ Dispose_Ports ();
1069
+ Dispose_Mold ();
1070
+ Dispose_CRC ();
1071
+ Free_Mem (PG_Boot_Strs , 0 );
1072
+ }
1067
1073
Dispose_StdIO ();
1068
1074
Free_Mem (PG_Reb_Stats , 0 );
1069
- Free_Mem (PG_Boot_Strs , 0 );
1070
1075
Free_Mem (Reb_Opts , 0 );
1071
1076
}
0 commit comments