Memory leak fix from James H.
[sgt/puzzles] / nestedvm.c
index 0a23a30..9381b6c 100644 (file)
@@ -167,6 +167,16 @@ void nestedvm_end_draw(void *handle)
     _call_java(4,2,0,0);
 }
 
+char *nestedvm_text_fallback(void *handle, const char *const *strings,
+                            int nstrings)
+{
+    /*
+     * We assume Java can cope with any UTF-8 likely to be emitted
+     * by a puzzle.
+     */
+    return dupstr(strings[0]);
+}
+
 const struct drawing_api nestedvm_drawing = {
     nestedvm_draw_text,
     nestedvm_draw_rect,
@@ -184,7 +194,8 @@ const struct drawing_api nestedvm_drawing = {
     nestedvm_blitter_save,
     nestedvm_blitter_load,
     NULL, NULL, NULL, NULL, NULL, NULL, /* {begin,end}_{doc,page,puzzle} */
-    NULL,                             /* line_width */
+    NULL, NULL,                               /* line_width, line_dotted */
+    nestedvm_text_fallback,
 };
 
 int jcallback_key_event(int x, int y, int keyval)
@@ -376,6 +387,8 @@ int main(int argc, char **argv)
     _fe = snew(frontend);
     _fe->timer_active = FALSE;
     _fe->me = midend_new(_fe, &thegame, &nestedvm_drawing, _fe);
+    if (argc > 1)
+       midend_game_id(_fe->me, argv[1]);   /* ignore failure */
     midend_new_game(_fe->me);
 
     if ((n = midend_num_presets(_fe->me)) > 0) {