Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Mar 2001 22:19:00 +0800 (CST)
From:      phj@cn.freebsd.org
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/25492: patch of CLISP
Message-ID:  <200103021419.WAA38324@cn.FreeBSD.org>

next in thread | raw e-mail | index | archive | help

>Number:         25492
>Category:       ports
>Synopsis:       patche of CLISP
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Mar 02 06:20:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Peng HaiJie
>Release:        FreeBSD 5.0-CURRENT
>Organization:
cn.FreeBSD.org
>Environment:

	

>Description:

	

>How-To-Repeat:
press TAB button in clisp intepreter.
	

>Fix:
I have tested the following patch,it can cue the above problem which I met.
	

Subject: Re: SIGSEGV happens on FreeBSD
     Date: Fri, 2 Mar 2001 14:42:38 +0100 (CET)
     From: Bruno Haible <haible@ilog.fr>
       To: phj@cn.freebsd.org
      CC: sds@clisp.cons.org




Peng HaiJie writes:

>     clisp always get the SIGSEGV signal when I press the Tab
> button everytime.
> 
> System infomation:
> FreeBSD sea.cn.freebsd.org 4.2-BETA FreeBSD 4.2-BETA #0: Fri Nov  3
23:53:12 CST 2000
phj@sea.cn.freebsd.org:/usr/src/sys/compile/kernel.20001025  i386
> 
> CLISP version is 2000.03.06,which was installed from the FreeBSD ports
system
> /usr/ports/lang/clisp.

Thanks for the report. Does this patch help?

Bruno

*** stream.d    2000/06/22 21:38:26     1.172
--- stream.d    2000/09/01 15:09:31     1.173
***************
*** 10160,10173 ****
        pushSTACK(fixnum((uintL)end));
        funcall(S(completion),3);
        var object mlist = value1; # Liste der Mvglichkeiten
-       end_callback();
        # Liste von Simple-Strings in mallozierten Array von mallozierten
        # Asciz-Strings umbauen:
!       if (nullp(mlist))
          return NULL;
        var char** array = (char**) malloc((llength(mlist)+1)*sizeof(char*));
!       if (array==NULL)
          return NULL;
        {
          var char** ptr = array;
          while (consp(mlist)) {
--- 10160,10176 ----
        pushSTACK(fixnum((uintL)end));
        funcall(S(completion),3);
        var object mlist = value1; # Liste der Mvglichkeiten
        # Liste von Simple-Strings in mallozierten Array von mallozierten
        # Asciz-Strings umbauen:
!       if (nullp(mlist)) {
!         end_callback();
          return NULL;
+       }
        var char** array = (char**) malloc((llength(mlist)+1)*sizeof(char*));
!       if (array==NULL) {
!         end_callback();
          return NULL;
+       }
        {
          var char** ptr = array;
          while (consp(mlist)) {
***************
*** 10175,10186 ****
--- 10178,10193 ----
            var const chart* ptr1;
            unpack_sstring_alloca(Car(mlist),charcount,0, ptr1=);
            var uintL bytecount = cslen(O(terminal_encoding),ptr1,charcount);
+           begin_system_call();
            var char* ptr2 = (char*) malloc((bytecount+1)*sizeof(char));
            if (ptr2==NULL) { # malloc scheitert -> alles zur|ckgeben
              until (ptr==array) { free(*--ptr); }
              free(array);
+             end_system_call();
+             end_callback();
              return NULL;
            }
+           end_system_call();
            cstombs(O(terminal_encoding),ptr1,charcount,(uintB*)ptr2,bytecount);
            ptr2[bytecount] = '\0';
            *ptr++ = ptr2;
***************
*** 10188,10193 ****
--- 10195,10201 ----
          }
          *ptr = NULL;
        }
+       end_callback();
        return array;
      }
  #endif
>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200103021419.WAA38324>