summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLieuwe <lieuwemo@gmail.com>2011-03-03 20:14:28 (GMT)
committer Lieuwe <lieuwemo@gmail.com>2011-03-03 20:14:28 (GMT)
commit0a9ea3819ff4b993b3b9e395d064d3d65e1baaa8 (patch)
tree60e6382fa94ec5f439b7323a2b780e984d87f224 /src
parenteab871c77487714cab68b9e4753a2bcf7ece79f4 (diff)
parent647ff2bff073d525f1c02eea5c4e01e8dcd3f279 (diff)
downloadpowder-0a9ea3819ff4b993b3b9e395d064d3d65e1baaa8.zip
powder-0a9ea3819ff4b993b3b9e395d064d3d65e1baaa8.tar.gz
Merge branch 'master' of https://github.com/FacialTurd/The-Powder-Toy
Diffstat (limited to 'src')
-rw-r--r--src/elements/sprk.c21
-rw-r--r--src/interface.c24
2 files changed, 27 insertions, 18 deletions
diff --git a/src/elements/sprk.c b/src/elements/sprk.c
index f107b9a..89480ad 100644
--- a/src/elements/sprk.c
+++ b/src/elements/sprk.c
@@ -120,7 +120,7 @@ int update_SPRK(UPDATE_FUNC_ARGS) {
conduct_sprk = 0;
if (ct==PT_NSCN && rt==PT_PSCN)
conduct_sprk = 0;
- if (ct==PT_ETRD && (parts[i].life!=5||!(rt==PT_METL||rt==PT_ETRD||rt==PT_BMTL||rt==PT_BRMT||rt==PT_LRBD||rt==PT_RBDM||rt==PT_PSCN||rt==PT_NSCN)))
+ if (ct==PT_ETRD && !(rt==PT_METL||rt==PT_ETRD||rt==PT_BMTL||rt==PT_BRMT||rt==PT_LRBD||rt==PT_RBDM||rt==PT_PSCN||rt==PT_NSCN))
conduct_sprk = 0;
if (ct==PT_INST&&rt!=PT_NSCN) conduct_sprk = 0;
if (ct==PT_SWCH && (rt==PT_PSCN||rt==PT_NSCN||rt==PT_WATR||rt==PT_SLTW||rt==PT_NTCT||rt==PT_PTCT||rt==PT_INWR))
@@ -137,15 +137,7 @@ int update_SPRK(UPDATE_FUNC_ARGS) {
conduct_sprk = 0;
if (conduct_sprk) {
- if (ct==PT_ETRD) {
- part_change_type(i,x,y,PT_ETRD);
- parts[i].ctype = PT_NONE;
- parts[i].life = 20;
- part_change_type(r>>8,x+rx,y+ry,PT_SPRK);
- parts[r>>8].life = 4;
- parts[r>>8].ctype = rt;
- }
- else if (rt==PT_WATR||rt==PT_SLTW) {
+ if (rt==PT_WATR||rt==PT_SLTW) {
if (parts[r>>8].life==0 && (parts[i].life<2 || ((r>>8)<i && parts[i].life<3)))
{
part_change_type(r>>8,x+rx,y+ry,PT_SPRK);
@@ -167,6 +159,15 @@ int update_SPRK(UPDATE_FUNC_ARGS) {
if (parts[r>>8].temp+10.0f<673.0f&&!legacy_enable&&(rt==PT_METL||rt==PT_BMTL||rt==PT_BRMT||rt==PT_PSCN||rt==PT_NSCN||rt==PT_ETRD||rt==PT_NBLE||rt==PT_IRON))
parts[r>>8].temp = parts[r>>8].temp+10.0f;
}
+ else if (ct==PT_ETRD && parts[i].life==5)
+ {
+ part_change_type(i,x,y,ct);
+ parts[i].ctype = PT_NONE;
+ parts[i].life = 20;
+ parts[r>>8].life = 4;
+ parts[r>>8].ctype = rt;
+ part_change_type(r>>8,x+rx,y+ry,PT_SPRK);
+ }
}
}
return 0;
diff --git a/src/interface.c b/src/interface.c
index d453a10..6221848 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -2549,7 +2549,8 @@ int search_ui(pixel *vid_buf)
memset(v_buf, 0, ((YRES+MENUSIZE)*(XRES+BARSIZE))*PIXELSIZE);
}
is_p1 = (exp_res < GRID_X*GRID_Y);
- free(results);
+ if (results)
+ free(results);
active = 0;
}
@@ -2824,6 +2825,10 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
data = http_async_req_stop(http, &status, &data_size);
if (status == 200)
{
+ if (!data||!data_size) {
+ error_ui(vid_buf, 0, "Save data is empty (may be corrupt)");
+ break;
+ }
pixel *full_save = prerender_save(data, data_size, &imgw, &imgh);
if (full_save!=NULL) {
save_pic = rescale_img(full_save, imgw, imgh, &thumb_w, &thumb_h, 2);
@@ -2842,15 +2847,16 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
{
http_last_use_2 = time(NULL);
info_data = http_async_req_stop(http_2, &status_2, NULL);
- if (status_2 == 200)
+ if (status_2 == 200 || !info_data)
{
info_ready = info_parse(info_data, info);
- if (info_ready==-1) {
- error_ui(vid_buf, 0, "Not found");
+ if (info_ready<=0) {
+ error_ui(vid_buf, 0, "Save info not found");
break;
}
}
- free(info_data);
+ if (info_data)
+ free(info_data);
active_2 = 0;
free(http_2);
http_2 = NULL;
@@ -3546,7 +3552,7 @@ int execute_tagop(pixel *vid_buf, char *op, char *tag)
return 1;
}
- if (result[2])
+ if (result && result[2])
{
strncpy(svf_tags, result+3, 255);
svf_id[15] = 0;
@@ -3604,14 +3610,16 @@ void execute_save(pixel *vid_buf)
free(result);
return;
}
- if (result && strncmp(result, "OK", 2))
+ if (!result || strncmp(result, "OK", 2))
{
+ if (!result)
+ result = mystrdup("Could not save - no reply from server");
error_ui(vid_buf, 0, result);
free(result);
return;
}
- if (result[2])
+ if (result && result[2])
{
strncpy(svf_id, result+3, 15);
svf_id[15] = 0;