Crash with cMenuEditStrItem in vdr-1.5.9
Commit Message
On 09/29/07 09:33, Christian Wieninger wrote:
> Hi,
>
> me and Rolf Ahrenberg noticed that there seems to be a problem with
> cMenuEditStrItem in vdr-1.5.9. To reproduce it just call the timer edit
> menu and hit 'left' on the directory item or any other cMenuEditStrItem
> object. The following patch should fix this:
>
> --- vdr-1.5.9/menuitems.c 2007-08-17 15:48:07.000000000 +0200
> +++ VDR/menuitems.c 2007-09-29 09:02:12.000000000 +0200
> @@ -500,7 +500,7 @@
> pos--;
> newchar = true;
> }
> - if (!insert && Utf8is(alpha, valueUtf8[pos]))
> + if (pos >= 0 && !insert && Utf8is(alpha, valueUtf8[pos]))
> uppercase = Utf8is(upper, valueUtf8[pos]);
> break;
> case kRight|k_Repeat:
>
> It happens here that pos is -1.
I would even put the whole 'if (!insert &&...' into the first
'if (pos > 0)...', because it only makes sense if an actual cursor
movement to the left has taken place:
Klaus
@@ -499,9 +499,9 @@
if (!insert || newchar)
pos--;
newchar = true;
+ if (!insert && Utf8is(alpha, valueUtf8[pos]))
+ uppercase = Utf8is(upper, valueUtf8[pos]);
}
- if (!insert && Utf8is(alpha, valueUtf8[pos]))
- uppercase = Utf8is(upper, valueUtf8[pos]);
break;
case kRight|k_Repeat:
case kRight: if (InEditMode())