aboutsummaryrefslogtreecommitdiffstats
path: root/src/node.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-01-07 20:33:42 +0100
committerDavid Robillard <d@drobilla.net>2019-04-13 19:48:23 +0200
commit2719fc4709d05193aa89557051af1d65a738c4d5 (patch)
tree18a11d72f789535d79f835f7ad44daa4d1b536b5 /src/node.c
parent105cc91e8fb7bb1a70e5715dbbbf3f967d508065 (diff)
downloadserd-2719fc4709d05193aa89557051af1d65a738c4d5.tar.gz
serd-2719fc4709d05193aa89557051af1d65a738c4d5.tar.bz2
serd-2719fc4709d05193aa89557051af1d65a738c4d5.zip
Fix integer conversion warnings
Diffstat (limited to 'src/node.c')
-rw-r--r--src/node.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/node.c b/src/node.c
index c726a2db..0f95d14a 100644
--- a/src/node.c
+++ b/src/node.c
@@ -407,6 +407,7 @@ is_uri_path_char(const char c)
if (is_alpha(c) || is_digit(c)) {
return true;
}
+
switch (c) {
case '-': case '.': case '_': case '~': // unreserved
case ':': case '@': // pchar
@@ -548,7 +549,7 @@ serd_new_decimal(double d, unsigned frac_digits, const SerdNode* datatype)
char* t = s - 1;
uint64_t dec = (uint64_t)int_part;
do {
- *t-- = '0' + (dec % 10);
+ *t-- = '0' + (char)(dec % 10);
} while ((dec /= 10) > 0);
@@ -558,16 +559,16 @@ serd_new_decimal(double d, unsigned frac_digits, const SerdNode* datatype)
double frac_part = fabs(d - int_part);
if (frac_part < DBL_EPSILON) {
*s++ = '0';
- node->n_bytes = (s - buf);
+ node->n_bytes = (size_t)(s - buf);
} else {
- uint64_t frac = llround(frac_part * pow(10.0, (int)frac_digits));
+ long long frac = llround(frac_part * pow(10.0, (int)frac_digits));
s += frac_digits - 1;
unsigned i = 0;
// Skip trailing zeros
for (; i < frac_digits - 1 && !(frac % 10); ++i, --s, frac /= 10) {}
- node->n_bytes = (s - buf) + 1;
+ node->n_bytes = (size_t)(s - buf) + 1;
// Write digits from last trailing zero to decimal point
for (; i < frac_digits; ++i) {
@@ -586,7 +587,7 @@ serd_new_integer(int64_t i, const SerdNode* datatype)
{
const SerdNode* type = datatype ? datatype : &serd_xsd_integer.node;
int64_t abs_i = (i < 0) ? -i : i;
- const unsigned digits = serd_digits(abs_i);
+ const unsigned digits = serd_digits((double)abs_i);
const size_t type_len = serd_node_total_size(type);
const size_t total_len = digits + 2 + type_len;
@@ -601,7 +602,7 @@ serd_new_integer(int64_t i, const SerdNode* datatype)
++s;
}
- node->n_bytes = (s - buf) + 1;
+ node->n_bytes = (size_t)((s - buf) + 1);
// Write integer part (right to left)
do {