Use u8_cpy instead of memcpy.
authorJohn Darrington <john@darrington.wattle.id.au>
Thu, 30 Jul 2009 04:21:38 +0000 (06:21 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Thu, 30 Jul 2009 04:21:38 +0000 (06:21 +0200)
Use u8_cpy instead of memcpy since the
former provides better type checking.

Smake
src/math/interaction.c

diff --git a/Smake b/Smake
index 2697064c98a3eacdc8ec4cfe1ef35d99111fb4ee..79b573b54962d6edec256ea1ddce8fda5c932c02 100644 (file)
--- a/Smake
+++ b/Smake
@@ -76,6 +76,7 @@ GNULIB_MODULES = \
        trunc \
        unilbrk/ulc-width-linebreaks \
        unistd \
+       unistr/u8-cpy \
        unistr/u8-strlen \
        unistr/u8-strncat \
        unlocked-io \
index 46d7e13ece35439ec7c35df74270db09e7c5cca5..f2831d27680d26033965a756c0aebf5c808fd177 100644 (file)
@@ -143,26 +143,23 @@ struct interaction_value *
 interaction_value_create (const struct interaction_variable *var, const union value **vals)
 {
   struct interaction_value *result = NULL;
-  const struct variable *member;
-  size_t i;
-  size_t n_vars;
   
   if (var != NULL)
     {
+      size_t i;
       int val_width = var_get_width (interaction_get_variable (var));
-      int offset;
+      int offset = 0;
+      size_t n_vars = interaction_get_n_vars (var);
 
       result = xmalloc (sizeof (*result));
       result->intr = var;
-      n_vars = interaction_get_n_vars (var);
 
       value_init (&result->val, val_width);
 
-      offset = 0;
       result->f = 1.0;
       for (i = 0; i < n_vars; i++)
        {
-         member = interaction_get_member (var, i);
+          const struct variable *member = interaction_get_member (var, i);
 
          if (var_is_value_missing (member, vals[i], MV_ANY))
            {
@@ -174,9 +171,9 @@ interaction_value_create (const struct interaction_variable *var, const union va
            {
              if (var_is_alpha (var->members[i]))
                {
-                 char *val = value_str_rw (&result->val, val_width);
+                 uint8_t *val = value_str_rw (&result->val, val_width);
                   int w = var_get_width (var->members[i]);
-                  memcpy (val + offset, value_str (vals[i], w), w);
+                  u8_cpy (val + offset, value_str (vals[i], w), w);
                   offset += w;
                }
              else if (var_is_numeric (var->members[i]))