summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-yaml.c
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2016-07-25 12:29:53 +0100
committerRichard Hughes <richard@hughsie.com>2016-07-25 12:29:53 +0100
commit74594acf6d9745b8ea0d4efbd58a4fc331f6ef46 (patch)
treefa31b9f18eea4396a1e247f20630334e42c9f046 /libappstream-glib/as-yaml.c
parente04788886491aeb6ace2ba1d1161f0ce86c04a21 (diff)
downloadappstream-glib-74594acf6d9745b8ea0d4efbd58a4fc331f6ef46.tar.gz
Add two new GCC warnings and fix up signed/unsigned issues
Diffstat (limited to 'libappstream-glib/as-yaml.c')
-rw-r--r--libappstream-glib/as-yaml.c41
1 files changed, 33 insertions, 8 deletions
diff --git a/libappstream-glib/as-yaml.c b/libappstream-glib/as-yaml.c
index 8aed749..b1b486d 100644
--- a/libappstream-glib/as-yaml.c
+++ b/libappstream-glib/as-yaml.c
@@ -86,7 +86,25 @@ as_yaml_node_get_value_as_int (const AsNode *node)
return G_MAXINT;
if (value_tmp > G_MAXINT || value_tmp < G_MININT)
return G_MAXINT;
- return value_tmp;
+ return (gint) value_tmp;
+}
+
+guint
+as_yaml_node_get_value_as_uint (const AsNode *node)
+{
+ const gchar *tmp;
+ gchar *endptr = NULL;
+ guint64 value_tmp;
+
+ tmp = as_yaml_node_get_value (node);
+ if (tmp == NULL)
+ return G_MAXUINT;
+ value_tmp = g_ascii_strtoull (tmp, &endptr, 10);
+ if (value_tmp == 0 && tmp == endptr)
+ return G_MAXUINT;
+ if (value_tmp > G_MAXUINT)
+ return G_MAXUINT;
+ return (guint) value_tmp;
}
static gboolean
@@ -114,12 +132,14 @@ as_yaml_to_string_cb (AsNode *node, gpointer data)
{
AsYamlNode *ym = node->data;
GString *str = (GString *) data;
- gint depth;
- gint i;
+ guint depth;
+ guint i;
depth = g_node_depth (node);
- for (i = 0; i < depth - 2; i++)
- g_string_append (str, " ");
+ if (depth >= 2) {
+ for (i = 0; i < depth - 2; i++)
+ g_string_append (str, " ");
+ }
if (ym == NULL)
return FALSE;
switch (ym->kind) {
@@ -256,8 +276,8 @@ as_yaml_from_data (const gchar *data, gssize data_len, GError **error)
/* parse */
yaml_parser_initialize (&parser);
if (data_len < 0)
- data_len = strlen (data);
- yaml_parser_set_input_string (&parser, (guchar *) data, data_len);
+ data_len = (guint) strlen (data);
+ yaml_parser_set_input_string (&parser, (guchar *) data, (gsize) data_len);
node = g_node_new (NULL);
as_node_yaml_process_layer (&parser, node);
yaml_parser_delete (&parser);
@@ -278,7 +298,12 @@ as_yaml_read_handler_cb (void *data,
size_t *size_read)
{
GInputStream *stream = G_INPUT_STREAM (data);
- *size_read = g_input_stream_read (stream, buffer, size, NULL, NULL);
+ *size_read = (gsize) g_input_stream_read (stream,
+ buffer,
+ (gsize)
+ size,
+ NULL,
+ NULL);
return 1;
}
#endif