summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2012-08-08 16:28:34 (GMT)
committer jacksonmj <mj-pt@jacksonmj.co.uk>2012-08-13 23:05:48 (GMT)
commit3c78cce7a56c91b7c4db8526f988101a5e1e2b2c (patch)
tree2d47dfcd85b085e62326ad9df8b31b320e979442 /src/main.c
parent8ec0f41fb143a6bda08d078232f3d70b36328dc4 (diff)
downloadpowder-3c78cce7a56c91b7c4db8526f988101a5e1e2b2c.zip
powder-3c78cce7a56c91b7c4db8526f988101a5e1e2b2c.tar.gz
fix many crashes when out of memory
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/main.c b/src/main.c
index f1dfa0c..2a091c2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1648,7 +1648,7 @@ int main(int argc, char *argv[])
dump_frame(vid_buf, XRES, YRES, XRES+BARSIZE);
if (sdl_key=='v'&&(sdl_mod & (KMOD_LCTRL|KMOD_RCTRL)))
{
- if (clipboard_ready==1)
+ if (clipboard_ready==1 && clipboard_data)
{
load_data = malloc(clipboard_length);
memcpy(load_data, clipboard_data, clipboard_length);
@@ -2185,17 +2185,21 @@ int main(int argc, char *argv[])
if (copy_mode==1)//CTRL-C, copy
{
clipboard_data=build_save(&clipboard_length, save_x, save_y, save_w, save_h, bmap, vx, vy, pv, fvx, fvy, signs, parts);
- clipboard_ready = 1;
+ if (clipboard_data)
+ clipboard_ready = 1;
save_mode = 0;
copy_mode = 0;
}
else if (copy_mode==2)//CTRL-X, cut
{
clipboard_data=build_save(&clipboard_length, save_x, save_y, save_w, save_h, bmap, vx, vy, pv, fvx, fvy, signs, parts);
- clipboard_ready = 1;
+ if (clipboard_data)
+ {
+ clipboard_ready = 1;
+ clear_area(save_x, save_y, save_w, save_h);
+ }
save_mode = 0;
copy_mode = 0;
- clear_area(save_x, save_y, save_w, save_h);
}
else//normal save
{