summaryrefslogtreecommitdiffstats
path: root/games/naev/files/patch-src_nlua__misn.c
blob: e4aaf36076a62a62f0f691c9b01585878ac68f50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235
# Subject: Turn player_missions in an array of pointers
# Origin: https://github.com/naev/naev/commit/155a7fdaf07e1b5549e6314a433425b4187bb33f
# Subject: Don't use a pointer to a pointer

--- src/nlua_misn.c.orig	2015-02-16 17:49:03 UTC
+++ src/nlua_misn.c
@@ -283,13 +283,13 @@ int misn_runFunc( Mission *misn, const c
    if (misn_delete) {
       ret = 2;
       mission_cleanup( cur_mission );
-      for (i=0; i<MISSION_MAX; i++)
-         if (cur_mission == &player_missions[i]) {
-            memmove( &player_missions[i], &player_missions[i+1],
-                  sizeof(Mission) * (MISSION_MAX-i-1) );
-            memset( &player_missions[MISSION_MAX-1], 0, sizeof(Mission) );
-            break;
-         }
+      for (i=0; i<MISSION_MAX; i++) {
+         if (cur_mission != player_missions[i])
+            continue;
+
+         mission_shift(i);
+         break;
+      }
    }
 
    return ret;
@@ -609,7 +609,7 @@ static int misn_accept( lua_State *L )
 
    /* find last mission */
    for (i=0; i<MISSION_MAX; i++)
-      if (player_missions[i].data == NULL)
+      if (player_missions[i]->data == NULL)
          break;
 
    cur_mission = misn_getFromLua(L);
@@ -620,9 +620,9 @@ static int misn_accept( lua_State *L )
    else if (i>=MISSION_MAX)
       ret = 1;
    else { /* copy it over */
-      memcpy( &player_missions[i], cur_mission, sizeof(Mission) );
+      memcpy( player_missions[i], cur_mission, sizeof(Mission) );
       memset( cur_mission, 0, sizeof(Mission) );
-      cur_mission = &player_missions[i];
+      cur_mission = player_missions[i];
       cur_mission->accepted = 1; /* Mark as accepted. */
 
       /* Need to change pointer. */
OpenPOWER on IntegriCloud