diff --git a/shell/ash.c b/shell/ash.c
index 273ecab..70425b3 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -1982,10 +1982,6 @@
 # define optindval()    (voptind.var_text + 7)
 #endif
 
-
-#define is_name(c)      ((c) == '_' || isalpha((unsigned char)(c)))
-#define is_in_name(c)   ((c) == '_' || isalnum((unsigned char)(c)))
-
 #if ENABLE_ASH_GETOPTS
 static void FAST_FUNC
 getoptsreset(const char *value)
@@ -1995,24 +1991,26 @@
 }
 #endif
 
+/* math.h has these, otherwise define our private copies */
+#if !ENABLE_SH_MATH_SUPPORT
+#define is_name(c)      ((c) == '_' || isalpha((unsigned char)(c)))
+#define is_in_name(c)   ((c) == '_' || isalnum((unsigned char)(c)))
 /*
- * Return of a legal variable name (a letter or underscore followed by zero or
- * more letters, underscores, and digits).
+ * Return the pointer to the first char which is not part of a legal variable name
+ * (a letter or underscore followed by letters, underscores, and digits).
  */
-static char* FAST_FUNC
+static const char*
 endofname(const char *name)
 {
-	char *p;
-
-	p = (char *) name;
-	if (!is_name(*p))
-		return p;
-	while (*++p) {
-		if (!is_in_name(*p))
+	if (!is_name(*name))
+		return name;
+	while (*++name) {
+		if (!is_in_name(*name))
 			break;
 	}
-	return p;
+	return name;
 }
+#endif
 
 /*
  * Compares two strings up to the first = or '\0'.  The first
@@ -2195,9 +2193,10 @@
 static void
 setvar(const char *name, const char *val, int flags)
 {
-	char *p, *q;
-	size_t namelen;
+	const char *q;
+	char *p;
 	char *nameeq;
+	size_t namelen;
 	size_t vallen;
 
 	q = endofname(name);
@@ -2211,12 +2210,13 @@
 	} else {
 		vallen = strlen(val);
 	}
+
 	INT_OFF;
 	nameeq = ckmalloc(namelen + vallen + 2);
-	p = (char *)memcpy(nameeq, name, namelen) + namelen;
+	p = memcpy(nameeq, name, namelen) + namelen;
 	if (val) {
 		*p++ = '=';
-		p = (char *)memcpy(p, val, vallen) + vallen;
+		p = memcpy(p, val, vallen) + vallen;
 	}
 	*p = '\0';
 	setvareq(nameeq, flags | VNOSAVE);
@@ -5444,7 +5444,7 @@
 
 	math_hooks.lookupvar = lookupvar;
 	math_hooks.setvar    = setvar2;
-	math_hooks.endofname = endofname;
+	//math_hooks.endofname = endofname;
 
 	INT_OFF;
 	result = arith(s, &errcode, &math_hooks);
@@ -9405,7 +9405,7 @@
 static int
 goodname(const char *p)
 {
-	return !*endofname(p);
+	return endofname(p)[0] == '\0';
 }
 
 
diff --git a/shell/hush.c b/shell/hush.c
index ae2876a..3e8c387 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -1671,24 +1671,6 @@
 	free(strings);
 }
 
-#if ENABLE_SH_MATH_SUPPORT
-# define is_name(c)      ((c) == '_' || isalpha((unsigned char)(c)))
-# define is_in_name(c)   ((c) == '_' || isalnum((unsigned char)(c)))
-static char* FAST_FUNC endofname(const char *name)
-{
-	char *p;
-
-	p = (char *) name;
-	if (!is_name(*p))
-		return p;
-	while (*++p) {
-		if (!is_in_name(*p))
-			break;
-	}
-	return p;
-}
-#endif
-
 static void FAST_FUNC set_local_var_from_halves(const char *name, const char *val)
 {
 	char *var = xasprintf("%s=%s", name, val);
@@ -4446,7 +4428,7 @@
 
 	hooks.lookupvar = get_local_var_value;
 	hooks.setvar = set_local_var_from_halves;
-	hooks.endofname = endofname;
+	//hooks.endofname = endofname;
 	exp_str = expand_pseudo_dquoted(arg);
 	res = arith(exp_str ? exp_str : arg, errcode_p, &hooks);
 	free(exp_str);
diff --git a/shell/math.c b/shell/math.c
index f0cc2e3..a4c55a4 100644
--- a/shell/math.c
+++ b/shell/math.c
@@ -122,7 +122,7 @@
 #define a_e_h_t arith_eval_hooks_t
 #define lookupvar (math_hooks->lookupvar)
 #define setvar    (math_hooks->setvar   )
-#define endofname (math_hooks->endofname)
+//#define endofname (math_hooks->endofname)
 
 #define arith_isspace(arithval) \
 	(arithval == ' ' || arithval == '\n' || arithval == '\t')
@@ -479,6 +479,18 @@
 /* ptr to ")" */
 #define endexpression (&op_tokens[sizeof(op_tokens)-7])
 
+const char* FAST_FUNC
+endofname(const char *name)
+{
+	if (!is_name(*name))
+		return name;
+	while (*++name) {
+		if (!is_in_name(*name))
+			break;
+	}
+	return name;
+}
+
 arith_t
 arith(const char *expr, int *perrcode, a_e_h_t *math_hooks)
 {
diff --git a/shell/math.h b/shell/math.h
index 2b0b2b8..96088b4 100644
--- a/shell/math.h
+++ b/shell/math.h
@@ -87,14 +87,19 @@
 #define strto_arith_t strtoul
 #endif
 
+/* ash's and hush's endofname is the same, so... */
+# define is_name(c)      ((c) == '_' || isalpha((unsigned char)(c)))
+# define is_in_name(c)   ((c) == '_' || isalnum((unsigned char)(c)))
+const char* FAST_FUNC endofname(const char *name);
+
 typedef const char* FAST_FUNC (*arith_var_lookup_t)(const char *name);
 typedef void        FAST_FUNC (*arith_var_set_t)(const char *name, const char *val);
-typedef char*       FAST_FUNC (*arith_var_endofname_t)(const char *name);
+//typedef const char* FAST_FUNC (*arith_var_endofname_t)(const char *name);
 
 typedef struct arith_eval_hooks {
 	arith_var_lookup_t    lookupvar;
 	arith_var_set_t       setvar;
-	arith_var_endofname_t endofname;
+//	arith_var_endofname_t endofname;
 } arith_eval_hooks_t;
 
 arith_t arith(const char *expr, int *perrcode, arith_eval_hooks_t*);
