guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

problem becouse scm_tc7_contin is not defined


From: P Pareit
Subject: problem becouse scm_tc7_contin is not defined
Date: Mon, 9 Sep 2002 11:18:56 +0200
User-agent: KMail/1.4.2

Hey,
I have downloaded and installed guile-1.6.0. I try to compile scwm using the 
new guile and I'm stuck with the following error:

make[1]: Entering directory `/usr/src/scwm/src'
gcc -DHAVE_CONFIG_H -I. -I. -I../include -I../include  -I/usr/X11R6/include     
   
-I/usr/include    -g -O2 -c guile-compat.c
cc1: warning: changing search order for system directory "/usr/include"
cc1: warning:   as it has already been specified as a non-system directory
guile-compat.c: In function `scm_internal_cwdr_no_unwind':
guile-compat.c:92: `scm_tc7_contin' undeclared (first use in this function)
guile-compat.c:92: (Each undeclared identifier is reported only once
guile-compat.c:92: for each function it appears in.)
make[1]: *** [guile-compat.o] Error 1

By doing a grep on scm_tc7_contin in the source tree of guile I found out that 
scm_tc7_contin is no longer supported and I have to use SMOB continuation for 
rootcont instead. Is there a place I can find more information on SMOB 
continuations in guile (I checked the info files for guile already, but I 
could have misted).
Or is there a simple way to replace scm_tc7_contin with some other function?
I also paste the function in which I have this problems:

SCM
scm_internal_cwdr_no_unwind (scm_catch_body_t body, void *body_data,
                             scm_catch_handler_t handler, void *handler_data,
                             SCM_STACKITEM *stack_start)
{
#ifdef USE_STACKJMPBUF
  scm_contregs static_jmpbuf;
#endif
  int old_ints_disabled = scm_ints_disabled;
  SCM old_rootcont;
  struct cwdr_no_unwind_handler_data my_handler_data;
  SCM answer;
  void *pRootContinuation = NULL;

  /* Create a fresh root continuation.  */
  { /* scope */
    SCM new_rootcont;
    SCM_NEWCELL (new_rootcont);
    scwm_defer_ints();
#ifdef USE_STACKJMPBUF
    SCM_SETJMPBUF (new_rootcont, &static_jmpbuf);
#else
    /* GJB:FIXME:MS:: this was leaking, but now I explicitly
       deallocate it, below.  Not sure what fix you were looking
       for so it should probably still be revisited. */
    pRootContinuation =
      scm_must_malloc ((long) sizeof (scm_contregs),
                       "inferior root continuation");
#ifdef SCWM_DEBUG_SCM_INTERNAL_CWDR_NO_UNWIND
    scwm_msg(DBG,"scm_internal_cwdr_no_unwind","+");
#endif
    SCM_SETJMPBUF (new_rootcont,pRootContinuation);
#endif
    SCM_SETCAR (new_rootcont, scm_tc7_contin);
**************************************^^^^^^^^^^^^^^^ problem here
    SCM_DYNENV (new_rootcont) = SCM_EOL;
    SCM_BASE (new_rootcont) = stack_start;
    SCM_SEQ (new_rootcont) = -1;
#ifdef DEBUG_EXTENSIONS
    SCM_DFRAME (new_rootcont) = 0;
#endif
    old_rootcont = scm_rootcont;
    scm_rootcont = new_rootcont;
    scwm_allow_ints();
  }

#ifdef DEBUG_EXTENSIONS
  SCM_DFRAME (old_rootcont) = scm_last_debug_frame;
  scm_last_debug_frame = 0;
#endif

  /* now invoke the function */
  my_handler_data.run_handler = 0;
  answer = scm_internal_catch (SCM_BOOL_T,
                               body, body_data,
                               cwdr_no_unwind_handler, &my_handler_data);

  scwm_defer_ints();
#ifdef SCWM_DEBUG_SCM_INTERNAL_CWDR_NO_UNWIND
  scwm_msg(DBG,"scm_internal_cwdr_no_unwind","-");
#endif
  scm_must_free(pRootContinuation);
  SCM_SETJMPBUF (scm_rootcont, NULL);
#ifdef DEBUG_EXTENSIONS
  scm_last_debug_frame = SCM_DFRAME (old_rootcont);
#endif
  scm_rootcont = old_rootcont;
  scwm_allow_ints();
  scm_ints_disabled = old_ints_disabled;

  /* Now run the real handler iff the body did a throw. */
  if (my_handler_data.run_handler)
    return handler (handler_data, my_handler_data.tag, my_handler_data.args);
  else
    return answer;
}

Any comments or help?
pieter;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]