@@ -118,6 +118,9 @@ X_init(int argc,
118118 /* ---------- Set up global variables */
119119 X_clear_globals ();
120120
121+ /* No blocking during initialization */
122+ ++MCwaitdepth;
123+
121124 MCswapbytes = MCEmscriptenIsLittleEndian ();
122125 MCtruemcstring = MCtruestring;
123126 MCfalsemcstring = MCfalsestring;
@@ -132,33 +135,33 @@ X_init(int argc,
132135
133136 if (!MCFontInitialize ())
134137 {
135- return false ;
138+ goto error_cleanup ;
136139 }
137140
138141 if (!MCLogicalFontTableInitialize ())
139142 {
140- return false ;
143+ goto error_cleanup ;
141144 }
142145
143146 /* ---------- More globals */
144147
145148 /* executable file name */
146149 if (!MCsystem->PathFromNative (argv[0 ], MCcmd))
147150 {
148- return false ;
151+ goto error_cleanup ;
149152 }
150153
151154 /* Locales */
152155 if (!MCLocaleCreateWithName (MCSTR (" en_US" ), kMCBasicLocale ))
153156 {
154- return false ;
157+ goto error_cleanup ;
155158 }
156159
157160 kMCSystemLocale = MCS_getsystemlocale ();
158161
159162 if (nil == kMCSystemLocale )
160163 {
161- return false ;
164+ goto error_cleanup ;
162165 }
163166
164167 /* ---------- argv[] global variables */
@@ -178,11 +181,21 @@ X_init(int argc,
178181 * available in the VFS before calling X_open(). */
179182 if (!MCEmscriptenStandaloneUnpack ())
180183 {
181- return false ;
184+ goto error_cleanup ;
182185 }
183186
184187 /* ---------- Continue booting... */
185- return X_open (argc, argv, envp);
188+ if (!X_open (argc, argv, envp))
189+ {
190+ goto error_cleanup;
191+ }
192+
193+ --MCwaitdepth;
194+ return true ;
195+
196+ error_cleanup:
197+ --MCwaitdepth;
198+ return false ;
186199}
187200
188201/* ================================================================
0 commit comments