* Re: Possible severe disoptimality in CCL
[not found] <E1GhBZM-0007FW-Mw@fencepost.gnu.org>
@ 2006-11-07 2:41 ` Kenichi Handa
0 siblings, 0 replies; only message in thread
From: Kenichi Handa @ 2006-11-07 2:41 UTC (permalink / raw)
In article <E1GhBZM-0007FW-Mw@fencepost.gnu.org>, Richard Stallman <rms@gnu.org> writes:
> Can you please DTRT, then ack?
[...]
> ------- Start of forwarded message -------
> Date: Sun, 05 Nov 2006 23:04:07 -0800
> From: Bob Halley <halley@play-bow.org>
[...]
> I then went looking for a reason for ccl.produced to be so wrong. The
> CCL program in question has a "buffer magnification" of zero, which
> means "produce no bytes". In this case the current destination pointer,
> dst, is set to NULL. A NULL dst causes the calculation of ccl->produced
> just after the ccl_finish tag in ccl_driver() to be wrong, because the
> code does
> ccl->produced = dst - destination
> I changed this code (patch attached) so that it set ccl->produced to
> zero if dst was NULL. With this change, both the type error and the
> segfault no longer happen. (The type error is fixed because we're no
> longer reading random memory and treating it as encoded characters.)
You are right. I was going to change Fccl_execute_on_string
to call ccl_driver with DESTINATION = NULL, but it seems
that your fix is better. I've just installed it.
By the way, this bug doesn't exist in HEAD because it was
introduced in emacs-unicode-2 when I changed the interface
of ccl_driver ().
---
Kenichi Handa
handa@m17n.org
^ permalink raw reply [flat|nested] only message in thread