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 <[email protected]>
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
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development