On Thursday 29 October 2009, Michael Roth wrote:
> The code works like follow (N = bit_len):
> 
>       N       -1      %4      2<<     -1      ~ (binary)
>       --------------------------------------------------
>       1       0       0       2       1       1111 1110
>       2       1       1       4       3       1111 1100
>       3       2       2       8       7       1111 1000
>       4       3       3       16      15      1111 0000
>       5       4       0       2       1       1111 1110
>       6       5       1       4       3       1111 1100
>       7       6       2       8       7       1111 1000
>       8       7       3       16      15      1111 0000
>       ...     ...     ...     ...     ...     ...
> 
> Signed-off-by: Michael Roth <mr...@nessie.de>

Looks like a nice fix, and at least the comment explains
how it's supposed to work.  ;)

Did you verify against the test case from the bug report?
Sure looks to me as if it's got to have fixed that...

I'll merge, and combine with a fix for the spelling error,
unless someone tells me that testcase fails.

> ---
>  src/svf/svf.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/src/svf/svf.c b/src/svf/svf.c
> index 276a374..54e2a26 100644
> --- a/src/svf/svf.c
> +++ b/src/svf/svf.c
> @@ -685,7 +685,7 @@ static int svf_copy_hexstring_to_binary(char *str, 
> uint8_t **bin, int orig_bit_l
>               str_len--;
>  
>       // check valid
> -     if (str_len > 0 || (ch & ~((1 << (4 - (bit_len % 4))) - 1)) != 0)
> +     if (str_len > 0 || (ch & ~((2 << ((bit_len - 1) % 4)) - 1)) != 0)
>       {
>               LOG_ERROR("value execede length");
>               return ERROR_FAIL;
> -- 
> 1.6.4.4
> 
> 


_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to