aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-07-07 23:50:39 -0400
committerDavid Robillard <d@drobilla.net>2020-06-21 18:12:03 +0200
commit654d0cffd006573d7eedba19fbf2e627f04737b3 (patch)
tree018b4a49a67ae425d1bdbf86315b5e87e5584004 /src
parent05601551a3e8350da8053f47ceb121c8de0e692c (diff)
downloadserd-654d0cffd006573d7eedba19fbf2e627f04737b3.tar.gz
serd-654d0cffd006573d7eedba19fbf2e627f04737b3.tar.bz2
serd-654d0cffd006573d7eedba19fbf2e627f04737b3.zip
Make serd_strtod API const-correct
This is an API breakage, but a minor one (particularly since NULL is allowed) that avoids the flaw in the C API.
Diffstat (limited to 'src')
-rw-r--r--src/reader.c2
-rw-r--r--src/reader.h2
-rw-r--r--src/serd_internal.h2
-rw-r--r--src/string.c6
4 files changed, 6 insertions, 6 deletions
diff --git a/src/reader.c b/src/reader.c
index 7a102cc0..ea1f2e65 100644
--- a/src/reader.c
+++ b/src/reader.c
@@ -79,7 +79,7 @@ Ref
push_node_padded(SerdReader* reader, size_t maxlen,
SerdType type, const char* str, size_t n_bytes)
{
- char* mem = (char*)serd_stack_push_aligned(
+ void* mem = serd_stack_push_aligned(
&reader->stack, sizeof(SerdNode) + maxlen + 1, sizeof(SerdNode));
SerdNode* const node = (SerdNode*)mem;
diff --git a/src/reader.h b/src/reader.h
index 453cba5d..280b9c1d 100644
--- a/src/reader.h
+++ b/src/reader.h
@@ -79,7 +79,7 @@ push_byte(SerdReader* reader, Ref ref, const int c)
assert(c != EOF);
SERD_STACK_ASSERT_TOP(reader, ref);
- char* const s = serd_stack_push(&reader->stack, 1);
+ char* const s = (char*)serd_stack_push(&reader->stack, 1);
SerdNode* const node = (SerdNode*)(reader->stack.buf + ref);
++node->n_bytes;
*(s - 1) = (uint8_t)c;
diff --git a/src/serd_internal.h b/src/serd_internal.h
index b6acf6fd..6c8cbd0a 100644
--- a/src/serd_internal.h
+++ b/src/serd_internal.h
@@ -209,7 +209,7 @@ serd_stack_free(SerdStack* stack)
stack->size = 0;
}
-static inline char*
+static inline void*
serd_stack_push(SerdStack* stack, size_t n_bytes)
{
const size_t new_size = stack->size + n_bytes;
diff --git a/src/string.c b/src/string.c
index ccf9234c..635588ae 100644
--- a/src/string.c
+++ b/src/string.c
@@ -110,7 +110,7 @@ read_sign(const char** sptr)
}
double
-serd_strtod(const char* str, char** endptr)
+serd_strtod(const char* str, size_t* end)
{
double result = 0.0;
@@ -146,8 +146,8 @@ serd_strtod(const char* str, char** endptr)
result *= pow(10, expt * expt_sign);
}
- if (endptr) {
- *endptr = (char*)s;
+ if (end) {
+ *end = s - str;
}
return result * sign;