- added patch "remove error handler as planned"
[fw/openocd] / src / helper / binarybuffer.c
index 6afd6e593c23902da97705de2f3f6b20172b1e17..ddfcced04e9686e5524fb2b2f53cedbd77bf4564 100644 (file)
@@ -101,6 +101,12 @@ u8* buf_cpy(u8 *from, u8 *to, int size)
 
        for (i = 0; i < num_bytes; i++)
                to[i] = from[i];
+       
+       /* mask out bits that don't belong to the buffer */     
+       if (size % 8)
+       {
+               to[size / 8] &= (0xff >> (8 - (size % 8)));
+       }
 
        return to;
 }
@@ -143,8 +149,8 @@ int buf_cmp_mask(u8 *buf1, u8 *buf2, u8 *mask, int size)
                /* mask out bits that don't really belong to the buffer if size isn't a multiple of 8 bits */
                if ((size % 8) && (i == num_bytes -1 ))
                {
-                       if (((buf1[i] & ((1 << (size % 8)) - 1)) & ((1 << (size % 8)) - 1)) != 
-                               ((buf2[i] & ((1 << (size % 8)) - 1)) & ((1 << (size % 8)) - 1)))
+                       if ((buf1[i] & ((1 << (size % 8)) - 1) & mask[i]) != 
+                               (buf2[i] & ((1 << (size % 8)) - 1) & mask[i]))
                                return 1;
                }
                else
@@ -348,7 +354,12 @@ int str_to_buf(char* str, int str_len, u8 *buf, int buf_len, int radix)
        }
        
        for (j = 0; j < CEIL(buf_len, 8); j++)
-               buf[j] = b256_buf[j];
+       {
+               if (j < b256_len)
+                       buf[j] = b256_buf[j];
+               else
+                       buf[j] = 0;
+       }
 
        /* mask out bits that don't belong to the buffer */
        if (buf_len % 8)
@@ -360,7 +371,7 @@ int str_to_buf(char* str, int str_len, u8 *buf, int buf_len, int radix)
        return i;
 }
 
-int buf_to_u32_handler(u8 *in_buf, void *priv)
+int buf_to_u32_handler(u8 *in_buf, void *priv, struct scan_field_s *field)
 {
        u32 *dest = priv;