diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cmdline.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/cmdline.c b/lib/cmdline.c index f596c08d213a..5ba8a942a478 100644 --- a/lib/cmdline.c +++ b/lib/cmdline.c | |||
@@ -116,7 +116,7 @@ char *get_options(const char *str, int nints, int *ints) | |||
116 | /** | 116 | /** |
117 | * memparse - parse a string with mem suffixes into a number | 117 | * memparse - parse a string with mem suffixes into a number |
118 | * @ptr: Where parse begins | 118 | * @ptr: Where parse begins |
119 | * @retptr: (output) Pointer to next char after parse completes | 119 | * @retptr: (output) Optional pointer to next char after parse completes |
120 | * | 120 | * |
121 | * Parses a string into a number. The number stored at @ptr is | 121 | * Parses a string into a number. The number stored at @ptr is |
122 | * potentially suffixed with %K (for kilobytes, or 1024 bytes), | 122 | * potentially suffixed with %K (for kilobytes, or 1024 bytes), |
@@ -126,11 +126,13 @@ char *get_options(const char *str, int nints, int *ints) | |||
126 | * megabyte, or one gigabyte, respectively. | 126 | * megabyte, or one gigabyte, respectively. |
127 | */ | 127 | */ |
128 | 128 | ||
129 | unsigned long long memparse (char *ptr, char **retptr) | 129 | unsigned long long memparse(char *ptr, char **retptr) |
130 | { | 130 | { |
131 | unsigned long long ret = simple_strtoull (ptr, retptr, 0); | 131 | char *endptr; /* local pointer to end of parsed string */ |
132 | 132 | ||
133 | switch (**retptr) { | 133 | unsigned long long ret = simple_strtoull(ptr, &endptr, 0); |
134 | |||
135 | switch (*endptr) { | ||
134 | case 'G': | 136 | case 'G': |
135 | case 'g': | 137 | case 'g': |
136 | ret <<= 10; | 138 | ret <<= 10; |
@@ -140,10 +142,14 @@ unsigned long long memparse (char *ptr, char **retptr) | |||
140 | case 'K': | 142 | case 'K': |
141 | case 'k': | 143 | case 'k': |
142 | ret <<= 10; | 144 | ret <<= 10; |
143 | (*retptr)++; | 145 | endptr++; |
144 | default: | 146 | default: |
145 | break; | 147 | break; |
146 | } | 148 | } |
149 | |||
150 | if (retptr) | ||
151 | *retptr = endptr; | ||
152 | |||
147 | return ret; | 153 | return ret; |
148 | } | 154 | } |
149 | 155 | ||