pick from upstream svn:
r4449 | khaled | 2012-07-02 20:15:46 +0200 (Mon, 02 Jul 2012) | 13 lines
Changed paths:
   M /trunk/source/texk/web2c/luatexdir/tex/mlist.w

Fix regression introduced in r4361

Radical rule thickness calculation was wrong for composite radicals with
old fonts. When get_delim_box() was rewritten, a special correction for
the radicals were lost. That block of code is now in make_radical()
itself.

A simple test:
$$y=\sqrt{\displaystyle\int \over x}$$
\bye

Related:
http://tex.stackexchange.com/q/61952/729
---
 source/texk/web2c/luatexdir/tex/mlist.w |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

Index: luatex-0.70.1.20120524/source/texk/web2c/luatexdir/tex/mlist.w
===================================================================
--- luatex-0.70.1.20120524.orig/source/texk/web2c/luatexdir/tex/mlist.w	2012-05-20 23:25:51.000000000 +0900
+++ luatex-0.70.1.20120524/source/texk/web2c/luatexdir/tex/mlist.w	2012-07-03 07:42:10.222842439 +0900
@@ -1799,7 +1799,17 @@
         theta = fraction_rule(cur_style);
         y = var_delimiter(left_delimiter(q), cur_size,
                           height(x) + depth(x) + clr + theta, NULL, cur_style);
-        theta = height(y);
+	/* If |y| is a composite then set |theta| to the height of its top
+           character, else set it to the height of |y|. */
+        if (list_ptr(y) != null
+            && type(list_ptr(y)) == hlist_node
+            && list_ptr(list_ptr(y)) != null
+            && type(list_ptr(list_ptr(y))) == glyph_node) {     /* and it should be */
+            theta = char_height(font(list_ptr(list_ptr(y))),
+                           character(list_ptr(list_ptr(y))));
+        } else {
+            theta = height(y);
+        }
     } else {
         y = var_delimiter(left_delimiter(q), cur_size,
                           height(x) + depth(x) + clr + theta, NULL, cur_style);
