Show More
@@ -20,6 +20,7 b'' | |||||
20 | of the GNU General Public License, incorporated herein by reference. |
|
20 | of the GNU General Public License, incorporated herein by reference. | |
21 | */ |
|
21 | */ | |
22 |
|
22 | |||
|
23 | #include <limits.h> | |||
23 | #include <stdlib.h> |
|
24 | #include <stdlib.h> | |
24 | #include <string.h> |
|
25 | #include <string.h> | |
25 |
|
26 | |||
@@ -27,6 +28,15 b'' | |||||
27 | #include "compat.h" |
|
28 | #include "compat.h" | |
28 | #include "mpatch.h" |
|
29 | #include "mpatch.h" | |
29 |
|
30 | |||
|
31 | /* VC9 doesn't include bool and lacks stdbool.h based on cext/util.h */ | |||
|
32 | #if defined(_MSC_VER) || __STDC_VERSION__ < 199901L | |||
|
33 | #define true 1 | |||
|
34 | #define false 0 | |||
|
35 | typedef unsigned char bool; | |||
|
36 | #else | |||
|
37 | #include <stdbool.h> | |||
|
38 | #endif | |||
|
39 | ||||
30 | static struct mpatch_flist *lalloc(ssize_t size) |
|
40 | static struct mpatch_flist *lalloc(ssize_t size) | |
31 | { |
|
41 | { | |
32 | struct mpatch_flist *a = NULL; |
|
42 | struct mpatch_flist *a = NULL; | |
@@ -60,6 +70,24 b' static ssize_t lsize(struct mpatch_flist' | |||||
60 | return a->tail - a->head; |
|
70 | return a->tail - a->head; | |
61 | } |
|
71 | } | |
62 |
|
72 | |||
|
73 | /* add helper to add src and *dest iff it won't overflow */ | |||
|
74 | static inline bool safeadd(int src, int *dest) | |||
|
75 | { | |||
|
76 | if ((src > 0) == (*dest > 0)) { | |||
|
77 | if (*dest > 0) { | |||
|
78 | if (src > (INT_MAX - *dest)) { | |||
|
79 | return false; | |||
|
80 | } | |||
|
81 | } else { | |||
|
82 | if (src < (INT_MIN - *dest)) { | |||
|
83 | return false; | |||
|
84 | } | |||
|
85 | } | |||
|
86 | } | |||
|
87 | *dest += src; | |||
|
88 | return true; | |||
|
89 | } | |||
|
90 | ||||
63 | /* move hunks in source that are less cut to dest, compensating |
|
91 | /* move hunks in source that are less cut to dest, compensating | |
64 | for changes in offset. the last hunk may be split if necessary. |
|
92 | for changes in offset. the last hunk may be split if necessary. | |
65 | */ |
|
93 | */ |
General Comments 0
You need to be logged in to leave comments.
Login now