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

Re: Symbol's function definition is void: #:--post-body--27977

In [emacs-w3m : No.11842] Michael Heerdegen wrote:
> Dear Bug Team!

> in an emacs -Q from an up-to-date developer Emacs 24, load w3m, do M-x
> w3m, hit g, enter an URL and hit RET.  You'll always get the following
> error:

> error in process sentinel: w3m-process-sentinel: Symbol's function
> definition is void: #:--post-body--27977

Thanks for posting this.  I've fixed it in CVS, though it's no
more than a workaround, maybe.

> Background:

> This bug is related to a recent change of the behavior of the `labels'
> macro in the CL package.

> With former versions of the CL package, something like the following
> worked:

>   (labels ((fak (n) (if (< n 2) 1 (* n (apply 'fak (list (1- n)))))))
>     (fak 5))

> meaning you could call `apply' on the quoted (with "'") symbol of a
> labels definition, like "'fac" in my example.

> This has now been considered a bug by emacs dev.  You _must_ quote
> the symbol with #' now, like this:

>   (labels ((fak (n) (if (< n 2) 1 (* n (apply #'fak (list (1- n)))))))
>     (fak 5))

> The first variant with the simple "'" quote doesn't work anymore,
> evaluating it will give you an error.

> To fix the bug described here above, please modify
> `w3m-process-do-with-temp-buffer' in "w3m-proc.el" so that it respects
> this rule.  This fixes the bug for me.

Great.  Could you post the recipe to the bug (or devel?) list?

What I did in `w3m-process-do-with-temp-buffer' was to replace
`labels' with `let', because I have no idea on tweaking it with
using `labels'.

> Please also check if other occurrences of `labels' in the code must be
> modified as well.

The other codes using LLL are safe, AFAICT.