<short summary of the patch>
authorCamm Maguire <camm@debian.org>
Sun, 13 Nov 2022 12:55:14 +0000 (12:55 +0000)
committerCamm Maguire <camm@debian.org>
Sun, 13 Nov 2022 12:55:14 +0000 (12:55 +0000)
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

Gbp-Pq: Name list_order.6

o/eval.c
o/read.d
o/sgbc.c

index fe26e669d09586919b40152bfd0cd9ba681b7dfb..c7b8e0b10181e7441e5a9e475c5170f8ae426ea6 100755 (executable)
--- a/o/eval.c
+++ b/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);
   }
 
 }
index c5522abc19d9de1d1b91f1f689a203366edf74db..ba678cf74341c48f18310f1d3b15c2988786102c 100755 (executable)
--- a/o/read.d
+++ b/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;
index c1ea016508b6321d03ceda11e398b7b63c888542..307f4f95e2d2df28c4828c546faca387a5477273 100755 (executable)
--- a/o/sgbc.c
+++ b/o/sgbc.c
@@ -369,7 +369,7 @@ memprotect_handler_test(int sig, long code, void *scp, char *addr) {
     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;