Use unsigned longs for bitwise operations in awk, thanks benoar. - Resolves the ipcalc.sh bug on some arches, closes #3012, #3946 - Submitted upstream as busybox bug #4774
SVN-Revision: 12427
This commit is contained in:
parent
2176ae1a6f
commit
a12f23ba98
1 changed files with 36 additions and 0 deletions
36
package/busybox/patches/530-unsigned_bitwise_ops.patch
Normal file
36
package/busybox/patches/530-unsigned_bitwise_ops.patch
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
--- a/editors/awk.c
|
||||||
|
+++ b/editors/awk.c
|
||||||
|
@@ -2046,27 +2046,27 @@
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_an:
|
||||||
|
- setvar_i(res, (long)getvar_i(av[0]) & (long)getvar_i(av[1]));
|
||||||
|
+ setvar_i(res, (unsigned long)getvar_i(av[0]) & (unsigned long)getvar_i(av[1]));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_co:
|
||||||
|
- setvar_i(res, ~(long)getvar_i(av[0]));
|
||||||
|
+ setvar_i(res, ~(unsigned long)getvar_i(av[0]));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_ls:
|
||||||
|
- setvar_i(res, (long)getvar_i(av[0]) << (long)getvar_i(av[1]));
|
||||||
|
+ setvar_i(res, (unsigned long)getvar_i(av[0]) << (unsigned long)getvar_i(av[1]));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_or:
|
||||||
|
- setvar_i(res, (long)getvar_i(av[0]) | (long)getvar_i(av[1]));
|
||||||
|
+ setvar_i(res, (unsigned long)getvar_i(av[0]) | (unsigned long)getvar_i(av[1]));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_rs:
|
||||||
|
- setvar_i(res, (long)((unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1])));
|
||||||
|
+ setvar_i(res, (unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1]));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_xo:
|
||||||
|
- setvar_i(res, (long)getvar_i(av[0]) ^ (long)getvar_i(av[1]));
|
||||||
|
+ setvar_i(res, (unsigned long)getvar_i(av[0]) ^ (unsigned long)getvar_i(av[1]));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_lo:
|
Loading…
Reference in a new issue