[glib: 2/25] Fixing signedness in glib/giochannel.c
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 2/25] Fixing signedness in glib/giochannel.c
- Date: Tue, 19 Mar 2019 11:03:01 +0000 (UTC)
commit 2f9e6e977a0c79da1ccc6c2ebcb302c1e1ae6fe5
Author: Emmanuel Fleury <emmanuel fleury u-bordeaux fr>
Date: Thu Jan 31 18:43:59 2019 +0100
Fixing signedness in glib/giochannel.c
In file included from glib/glibconfig.h:9,
from glib/gtypes.h:32,
from glib/gquark.h:32,
from glib/gerror.h:28,
from glib/gconvert.h:32,
from glib/giochannel.h:32,
from glib/giochannel.c:37:
glib/giochannel.c: In function ‘g_io_channel_write_chars’:
glib/gmacros.h:351:26: error: comparison of integer expressions of different signedness: ‘gsize’ {aka
‘long unsigned int’} and ‘gssize’ {aka ‘long int’} [-Werror=sign-compare]
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
^
glib/giochannel.c:2285:31: note: in expansion of macro ‘MIN’
gssize write_this = MIN (space_in_buf, count - wrote_bytes);
^~~
glib/gmacros.h:351:41: error: operand of ?: changes signedness from ‘gssize’ {aka ‘long int’} to ‘gsize’
{aka ‘long unsigned int’} due to unsignedness of other operand [-Werror=sign-compare]
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
^~~
glib/giochannel.c:2285:31: note: in expansion of macro ‘MIN’
gssize write_this = MIN (space_in_buf, count - wrote_bytes);
^~~
glib/giochannel.c:2415:41: error: comparison of integer expressions of different signedness: ‘gssize’
{aka ‘long int’} and ‘gsize’ {aka ‘long unsigned int’} [-Werror=sign-compare]
g_assert (count == from_buf_len - from_buf_old_len);
^~
glib/gmacros.h:455:25: note: in definition of macro ‘G_LIKELY’
#define G_LIKELY(expr) (expr)
^~~~
glib/giochannel.c:2415:25: note: in expansion of macro ‘g_assert’
g_assert (count == from_buf_len - from_buf_old_len);
^~~~~~~~
glib/giochannel.c | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
---
diff --git a/glib/giochannel.c b/glib/giochannel.c
index 4fba3a5b0..1956e9dc6 100644
--- a/glib/giochannel.c
+++ b/glib/giochannel.c
@@ -2180,6 +2180,7 @@ g_io_channel_write_chars (GIOChannel *channel,
gsize *bytes_written,
GError **error)
{
+ gsize count_unsigned;
GIOStatus status;
gssize wrote_bytes = 0;
@@ -2190,8 +2191,9 @@ g_io_channel_write_chars (GIOChannel *channel,
if ((count < 0) && buf)
count = strlen (buf);
-
- if (count == 0)
+ count_unsigned = count;
+
+ if (count_unsigned == 0)
{
if (bytes_written)
*bytes_written = 0;
@@ -2199,7 +2201,7 @@ g_io_channel_write_chars (GIOChannel *channel,
}
g_return_val_if_fail (buf != NULL, G_IO_STATUS_ERROR);
- g_return_val_if_fail (count > 0, G_IO_STATUS_ERROR);
+ g_return_val_if_fail (count_unsigned > 0, G_IO_STATUS_ERROR);
/* Raw write case */
@@ -2210,7 +2212,8 @@ g_io_channel_write_chars (GIOChannel *channel,
g_assert (!channel->write_buf || channel->write_buf->len == 0);
g_assert (channel->partial_write_buf[0] == '\0');
- status = channel->funcs->io_write (channel, buf, count, &tmp_bytes, error);
+ status = channel->funcs->io_write (channel, buf, count_unsigned,
+ &tmp_bytes, error);
if (bytes_written)
*bytes_written = tmp_bytes;
@@ -2286,7 +2289,7 @@ g_io_channel_write_chars (GIOChannel *channel,
if (!channel->encoding)
{
- gssize write_this = MIN (space_in_buf, count - wrote_bytes);
+ gssize write_this = MIN (space_in_buf, count_unsigned - wrote_bytes);
g_string_append_len (channel->write_buf, buf, write_this);
buf += write_this;
@@ -2306,7 +2309,7 @@ g_io_channel_write_chars (GIOChannel *channel,
from_buf = channel->partial_write_buf;
from_buf_old_len = strlen (channel->partial_write_buf);
g_assert (from_buf_old_len > 0);
- from_buf_len = MIN (6, from_buf_old_len + count);
+ from_buf_len = MIN (6, from_buf_old_len + count_unsigned);
memcpy (channel->partial_write_buf + from_buf_old_len, buf,
from_buf_len - from_buf_old_len);
@@ -2314,7 +2317,7 @@ g_io_channel_write_chars (GIOChannel *channel,
else
{
from_buf = buf;
- from_buf_len = count - wrote_bytes;
+ from_buf_len = count_unsigned - wrote_bytes;
from_buf_old_len = 0;
}
@@ -2404,7 +2407,7 @@ reconvert:
memcpy (channel->partial_write_buf, from_buf, left_len);
channel->partial_write_buf[left_len] = '\0';
if (bytes_written)
- *bytes_written = count;
+ *bytes_written = count_unsigned;
return G_IO_STATUS_NORMAL;
}
@@ -2416,12 +2419,12 @@ reconvert:
* less than a full character
*/
- g_assert (count == from_buf_len - from_buf_old_len);
+ g_assert (count_unsigned == from_buf_len - from_buf_old_len);
channel->partial_write_buf[from_buf_len] = '\0';
if (bytes_written)
- *bytes_written = count;
+ *bytes_written = count_unsigned;
return G_IO_STATUS_NORMAL;
}
@@ -2483,7 +2486,7 @@ reconvert:
}
if (bytes_written)
- *bytes_written = count;
+ *bytes_written = count_unsigned;
return G_IO_STATUS_NORMAL;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]