Description: <short summary of the patch>
 TODO: Put a short summary on the line above and replace this paragraph
 with a longer explanation of this change. Complete the meta-information
 with other relevant fields (see below for details). To make it easier, the
 information below has been extracted from the changelog. Adjust it or drop
 it.
 .
 gcl (2.6.12-49) unstable; urgency=medium
 .
   * list_order.5
Author: Camm Maguire <camm@debian.org>

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: 2017-06-13

--- gcl-2.6.12.orig/o/eval.c
+++ gcl-2.6.12/o/eval.c
@@ -96,18 +96,18 @@ quick_call_sfun(object fun) {
 
 }
 
-/* only for sfun not gfun !!  Does not check number of args */
-static void
-call_sfun_no_check(object fun)
-{ DEBUG_AVMA
-  int n;
-  object *base=vs_base;
-  n=vs_top - base;
-  base[0]=c_apply_n_fun(fun,n,base);
-  vs_top=(vs_base=base)+1;
-  CHECK_AVMA;
-  return;
-}
+/* /\* only for sfun not gfun !!  Does not check number of args *\/ */
+/* static void */
+/* call_sfun_no_check(object fun) */
+/* { DEBUG_AVMA */
+/*   int n; */
+/*   object *base=vs_base; */
+/*   n=vs_top - base; */
+/*   base[0]=c_apply_n_fun(fun,n,base); */
+/*   vs_top=(vs_base=base)+1; */
+/*   CHECK_AVMA; */
+/*   return; */
+/* } */
 static void
 call_vfun(object fun)
 { DEBUG_AVMA
@@ -615,10 +615,11 @@ super_funcall_no_event(object fun) {
 
   switch(type_of(fun)) {
   case t_cfun:
-    (*fun->cf.cf_self)();
-    return;
+    (*fun->cf.cf_self)(); return;
+  case t_cclosure:
+    (*fun->cc.cc_self)(fun); return;
   case t_sfun:
-    call_sfun_no_check(fun); return;
+    /* call_sfun_no_check(fun); return; */
   case t_gfun:
     quick_call_sfun(fun); return;
   case t_vfun:
@@ -631,7 +632,7 @@ super_funcall_no_event(object fun) {
     super_funcall_no_event(fun->s.s_gfdef);
     return;
   default:
-    funcall_no_event(fun);
+    funcall(fun);
   }
 
 }
--- gcl-2.6.12.orig/o/read.d
+++ gcl-2.6.12/o/read.d
@@ -1176,6 +1176,7 @@ Lsharp_left_parenthesis_reader()
 			goto L;
 		}
 		vs_base[0]=list(4,siScomma,sLapply,list(2,sLquote,sLvector),vs_base[2]);
+		vs_top=vs_base+1;
 		return;
 	}
 	vsp = vs_top;
--- gcl-2.6.12.orig/o/sgbc.c
+++ gcl-2.6.12/o/sgbc.c
@@ -369,7 +369,7 @@ memprotect_handler_test(int sig, long co
     do_gcl_abort();
   }
   memprotect_handler_invocations=1;
-  if (faddr!=memprotect_test_address)
+  if (page(faddr)!=page(memprotect_test_address))
     memprotect_result=memprotect_bad_fault_address;
   else
     memprotect_result=memprotect_none;
