[iyonix-support] Re: Alt-select rename does not always work

  • From: "Ste (PlusNet)" <steve@xxxxxxxxxxxxxxx>
  • To: iyonix-support@xxxxxxxxxxxxx
  • Date: Tue, 04 Jul 2006 17:00:04 +0100

On 04 Jul, Ste (PlusNet) <steve@xxxxxxxxxxxxxxx> wrote:
> [...]
>
> I suspect it's something to do with path variables (unlikely),
> word-alignment, terminator bytes and a strcmp in the filer sources which
> makes it decide whether to actually do the rename operation or not. E.g.
>
> When you press return to dismiss the writeable icon and start the
> alt-rename operation, the filer copies the leafname from the writeable
> icon into the buffer used by the rename menu item and then strcmps
> (case-insensitive) the leaf name against what it already is. It then calls
> the rename routine as if the rename menu item were used BUT only if it
> believes that the leafname has changed. This test is occasionally failing
> for some reason - that's where I'd be looking for this bug (if I could
> reproduce it on demand).

In fact, I think I can see the fault; the strcmp routine takes a char value
in R6 on entry which is treated as an additional possible terminator
character (e.g. you might set R6 to '.' if you want to stop the comparison
at the first full stop).

The call to this strcmp routine from the alt-rename code doesn't appear to
set R6 so I can only assume it contains junk and may occasionally contain a
value in the range 33..255.

If one of the strings hits a terminator character at the same point that the
other hits a char matching the value in R6, the strcmp will return saying
that the two strings are equal.

So, if for example I have a file called "steve" and I want to rename it to
"steve/txt" and R6 happened to contain the value of the char '/' (47) - the
strcmp would say that the two strings match and the rename wouldn't happen.

Now I need to check to see if R6 really does contain junk... Yep. It
contains whatever the Wimp left in R6 on return from the filer's call to
Wimp_PollIdle with a keypress event - no attempt is made by the filer to
initialise this register's value.

Hmph!

Steve

-- 
Steve @ PlusNet

---
To alter your preferences or leave the group, 
visit //www.freelists.org/list/iyonix-support
Other info via //www.freelists.org/webpage/iyonix-support

Other related posts: