pin keep us posted if you get a fix for it.
Here's a quick patch for you to test (I'll work up a proper fix later):
diff -urN ksh.orig/edit.c ksh/edit.c
--- ksh.orig/edit.c	2018-06-03 12:18:29.000000000 +0000
+++ ksh/edit.c	2021-09-03 19:08:08.116788555 +0000
@@ -132,6 +132,11 @@
 {
 	int	i;
 
+#if defined(TIOCGWINSZ)
+	got_sigwinch = 1;
+	check_sigwinch();
+#endif /* TIOCGWINSZ */
+
 	x_mode(true);
 #ifdef EMACS
 	if (Flag(FEMACS) || Flag(FGMACS))
@@ -145,10 +150,6 @@
 #endif
 		i = -1;		/* internal error */
 	x_mode(false);
-#if defined(TIOCGWINSZ)
-	if (got_sigwinch)
-		check_sigwinch();
-#endif /* TIOCGWINSZ */
 
 	return i;
 }
@@ -169,6 +170,13 @@
 		}
 	if (n != 1)
 		return -1;
+#if defined(TIOCGWINSZ)
+	if (got_sigwinch) {
+		check_sigwinch();
+extern void winch_cb(void);
+		winch_cb();
+	}
+#endif /* TIOCGWINSZ */
 	return (int) (unsigned char) c;
 }
 
diff -urN ksh.orig/emacs.c ksh/emacs.c
--- ksh.orig/emacs.c	2018-05-08 16:37:59.000000000 +0000
+++ ksh/emacs.c	2021-09-03 07:25:53.242088836 +0000
@@ -316,6 +316,14 @@
 	{ XFUNC_mv_back,		2,	'D'  },
 };
 
+void winch_cb(void);
+void
+winch_cb(void)
+{
+	xx_cols = x_cols;
+	x_displen = xx_cols - 2 - x_col;	
+}
+
 int
 x_emacs(buf, len)
 	char *buf;