aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2016-10-13 02:41:42 +0200
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2016-10-13 02:41:42 +0200
commitcae375549716c479d4e7121984df78a20d662386 (patch)
tree29412308a4b8d34fdcaa20836b6d4b55a4a446c1
parent836ea885b2fc62cc7b483149937b91c93815e8ae (diff)
downloadblogc-cae375549716c479d4e7121984df78a20d662386.tar.gz
blogc-cae375549716c479d4e7121984df78a20d662386.tar.bz2
blogc-cae375549716c479d4e7121984df78a20d662386.zip
renderer: fixed strtol error detection bug in freebsd
it seems that error detection for strtol using errno is a glibc extension.
-rw-r--r--src/blogc/renderer.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/blogc/renderer.c b/src/blogc/renderer.c
index b4d7a90..398f4f8 100644
--- a/src/blogc/renderer.c
+++ b/src/blogc/renderer.c
@@ -6,7 +6,6 @@
* See the file LICENSE.
*/
-#include <errno.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
@@ -82,11 +81,11 @@ blogc_format_variable(const char *name, bc_trie_t *global, bc_trie_t *local,
for (i = last - 1; i > 0 && var[i] >= '0' && var[i] <= '9'; i--);
if (var[i] == '_' && (i + 1) < last) { // var ends with '_[0-9]+'
- // passing NULL to endptr because our string was previously validated
- len = strtol(var + i + 1, NULL, 10);
- if (errno != 0) {
- fprintf(stderr, "warning: invalid variable size for '%s' (%s), "
- "ignoring.\n", var, strerror(errno));
+ char *endptr;
+ len = strtol(var + i + 1, &endptr, 10);
+ if (*endptr != '\0') {
+ fprintf(stderr, "warning: invalid variable size for '%s', "
+ "ignoring.\n", var);
len = -1;
}
else {