On CCL when timeout is specified and form returns more then one value only one is returned <br><br>CL-USER> (trivial-timeout:with-timeout (1)<br> (values 1 2 3))<br>1<br>CL-USER><br><br>This fix that<br>Best,Milan<br>
<br>#+(or digitool openmcl ccl)<br>(defun generate-platform-specific-code (seconds-symbol doit-symbol)<br> (let ((checker-process (format nil "Checker ~S" (gensym)))<br> (waiting-process (format nil "Waiter ~S" (gensym)))<br>
(process (gensym)))<br> `(let* ((,process (ccl:process-run-function<br> ,checker-process<br> (lambda ()<br> (progn (,doit-symbol))))))<br> (ccl:process-wait-with-timeout<br> ,waiting-process<br>
(* ,seconds-symbol #+(or openmcl ccl)<br> ccl:*ticks-per-second* #+digitool 60)<br> (lambda ()<br> (not (ccl::process-active-p ,process))))<br> (when (ccl::process-active-p ,process)<br> (ccl:process-kill ,process)<br>
(cerror "Timeout" 'timeout-error))<br> (ccl:join-process ,process))))<br><br>