summaryrefslogtreecommitdiff
path: root/package/busybox/patches/004-busybox-1.23.0-ash.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/patches/004-busybox-1.23.0-ash.patch')
-rw-r--r--package/busybox/patches/004-busybox-1.23.0-ash.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/package/busybox/patches/004-busybox-1.23.0-ash.patch b/package/busybox/patches/004-busybox-1.23.0-ash.patch
new file mode 100644
index 000000000..fb494aa25
--- /dev/null
+++ b/package/busybox/patches/004-busybox-1.23.0-ash.patch
@@ -0,0 +1,34 @@
+--- busybox-1.23.0/shell/ash.c
++++ busybox-1.23.0-ash/shell/ash.c
+@@ -6746,6 +6746,14 @@ varvalue(char *name, int varflags, int f
+ len = strlen(p);
+ if (!(subtype == VSPLUS || subtype == VSLENGTH))
+ memtodest(p, len, syntax, quotes);
++#if ENABLE_UNICODE_SUPPORT
++ if (subtype == VSLENGTH && len > 0) {
++ reinit_unicode_for_ash();
++ if (unicode_status == UNICODE_ON) {
++ len = unicode_strlen(p);
++ }
++ }
++#endif
+ return len;
+ }
+
+@@ -6829,15 +6837,7 @@ evalvar(char *p, int flags, struct strli
+ varunset(p, var, 0, 0);
+
+ if (subtype == VSLENGTH) {
+- ssize_t n = varlen;
+- if (n > 0) {
+- reinit_unicode_for_ash();
+- if (unicode_status == UNICODE_ON) {
+- const char *val = lookupvar(var);
+- n = unicode_strlen(val);
+- }
+- }
+- cvtnum(n > 0 ? n : 0);
++ cvtnum(varlen > 0 ? varlen : 0);
+ goto record;
+ }
+