summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Gran <spk121@yahoo.com>2009-08-11 22:01:20 -0700
committerMichael Gran <spk121@yahoo.com>2009-08-11 22:12:22 -0700
commit9909c3956ae653488657c5909547dfd4b97557cc (patch)
tree309127222afb8e8b0adc188c8c2b02d338e0e20e
parent4cd00cc6b2ae47f39b8470325aecb776801b57df (diff)
downloadguile-9909c3956ae653488657c5909547dfd4b97557cc.tar.gz
Avoid unitialized and unused warnings in scm_string_append
* libguile/strings.c (scm_string_append): avoid warnings
-rw-r--r--libguile/strings.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/libguile/strings.c b/libguile/strings.c
index 437cedcac..74cebd69b 100644
--- a/libguile/strings.c
+++ b/libguile/strings.c
@@ -1297,9 +1297,12 @@ SCM_DEFINE (scm_string_append, "string-append", 0, 0, 1,
size_t len = 0;
int wide = 0;
SCM l, s;
- char *data;
- scm_t_wchar *wdata;
int i;
+ union
+ {
+ char *narrow;
+ scm_t_wchar *wide;
+ } data;
SCM_VALIDATE_REST_ARGUMENT (args);
for (l = args; !scm_is_null (l); l = SCM_CDR (l))
@@ -1310,10 +1313,11 @@ SCM_DEFINE (scm_string_append, "string-append", 0, 0, 1,
if (!scm_i_is_narrow_string (s))
wide = 1;
}
+ data.narrow = NULL;
if (!wide)
- res = scm_i_make_string (len, &data);
+ res = scm_i_make_string (len, &data.narrow);
else
- res = scm_i_make_wide_string (len, &wdata);
+ res = scm_i_make_wide_string (len, &data.wide);
for (l = args; !scm_is_null (l); l = SCM_CDR (l))
{
@@ -1323,20 +1327,20 @@ SCM_DEFINE (scm_string_append, "string-append", 0, 0, 1,
len = scm_i_string_length (s);
if (!wide)
{
- memcpy (data, scm_i_string_chars (s), len);
- data += len;
+ memcpy (data.narrow, scm_i_string_chars (s), len);
+ data.narrow += len;
}
else
{
if (scm_i_is_narrow_string (s))
{
for (i = 0; i < scm_i_string_length (s); i++)
- wdata[i] = (unsigned char) scm_i_string_chars (s)[i];
+ data.wide[i] = (unsigned char) scm_i_string_chars (s)[i];
}
else
- u32_cpy ((scm_t_uint32 *) wdata,
+ u32_cpy ((scm_t_uint32 *) data.wide,
(scm_t_uint32 *) scm_i_string_wide_chars (s), len);
- wdata += len;
+ data.wide += len;
}
scm_remember_upto_here_1 (s);
}