On Sat, Mar 13, 2010 at 5:08 PM, Seth Burleigh <span dir="ltr"><<a href="mailto:seth@tewebs.com">seth@tewebs.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
      cl_object evaled = cl_safe_eval(obj,(cl_object)env,Cnil);<br clear="all"></blockquote><div><br>This line is wrong. The "environment" that cl_safe_eval() takes is not the Lisp environment but the enviroment in which the form is compiled and evaluated -- similar to the &env that a macro takes --. This was an important source of problems, leaving the lisp library in an unstable state.<br>
<br>As for the rest, the segmentation faults you saw were a symptom that something very wrong was going on, and it was caused by a chain of errors caused when the debugger was entereed. In other words, ext:safe-eval was not fully protected. I have changed the way forms are executed and hopefully now the debugger will not be started at all.<br>
<br>Your example, with a minor change, seems to work<br><br>>>(prin "HI")<br><br>NIL<br>>>(cos 1.0)<br><br>0.54030234<br>>>(/ 2 0)<br><br>NIL<br>>>2.0<br><br>2.0<br>>><br><br>Juanjo <br>
<br>#include <ecl/ecl.h><br>#include <stdio.h><br>#include <string.h><br><br>int main(int argc, char **argv)  {<br> cl_boot(argc, argv);<br> cl_env_ptr env = ecl_process_env();<br> while (1) {<br>   printf("\n>>");<br>
   int nbytes = 100;<br>   char *str = (char*)malloc(nbytes);<br>   nbytes = fgets(str, nbytes, stdin) - str;<br>   if (strcmp(str,"exit\n")==0 ) {<br>     break;<br>   }<br><br>   cl_object obj = c_string_to_object(str);<br>
<br>   //uncommented code below produced unprotected access error<br>   //puts(obj==OBJNULL);<br><br>   CL_CATCH_ALL_BEGIN(env) {<br>     cl_object evaled = cl_safe_eval(obj,Cnil,Cnil);<br>     cl_pprint(1,evaled);<br>   } CL_CATCH_ALL_IF_CAUGHT {<br>
     puts("ERROR");<br>   } CL_CATCH_ALL_END;<br><br>   free(str);<br> }<br> cl_shutdown();<br>}<br><br><br></div></div><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br>
<a href="http://juanjose.garciaripoll.googlepages.com">http://juanjose.garciaripoll.googlepages.com</a><br>