mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Check return values from fwrite when saving files.
[originally from svn r8278]
This commit is contained in:
23
gtk.c
23
gtk.c
@ -1328,10 +1328,16 @@ static char *file_selector(frontend *fe, char *title, int save)
|
|||||||
return fe->filesel_name;
|
return fe->filesel_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct savefile_write_ctx {
|
||||||
|
FILE *fp;
|
||||||
|
int error;
|
||||||
|
};
|
||||||
|
|
||||||
static void savefile_write(void *wctx, void *buf, int len)
|
static void savefile_write(void *wctx, void *buf, int len)
|
||||||
{
|
{
|
||||||
FILE *fp = (FILE *)wctx;
|
struct savefile_write_ctx *ctx = (struct savefile_write_ctx *)wctx;
|
||||||
fwrite(buf, 1, len, fp);
|
if (fwrite(buf, 1, len, ctx->fp) < len)
|
||||||
|
ctx->error = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int savefile_read(void *wctx, void *buf, int len)
|
static int savefile_read(void *wctx, void *buf, int len)
|
||||||
@ -1373,9 +1379,18 @@ static void menu_save_event(GtkMenuItem *menuitem, gpointer data)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
midend_serialise(fe->me, savefile_write, fp);
|
{
|
||||||
|
struct savefile_write_ctx ctx;
|
||||||
|
ctx.fp = fp;
|
||||||
|
ctx.error = 0;
|
||||||
|
midend_serialise(fe->me, savefile_write, &ctx);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
if (ctx.error) {
|
||||||
|
error_box(fe->window, "Error writing save file");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user