From 50902fbb4b4ce4d1c3185c61a6c46fb06848ad74 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Mon, 18 Apr 2005 18:33:34 +0000 Subject: [PATCH] Fix ODGetCodeIfLongest(). Was returning NO_MATCH if there was any code longer than the one in the buffer currently. --- src/odoors/ODGetIn.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/odoors/ODGetIn.c b/src/odoors/ODGetIn.c index 70db99fd71..10be7f40f0 100644 --- a/src/odoors/ODGetIn.c +++ b/src/odoors/ODGetIn.c @@ -443,26 +443,30 @@ static int ODHaveStartOfSequence(WORD wFlags) static int ODGetCodeIfLongest(WORD wFlags) { int CurrLen=0; - int seqlen; + int seqlen1; + int seqlen2; int i; int retval=NO_MATCH;; if(wFlags & GETIN_RAW) return(NO_MATCH); + seqlen1=strlen(szCurrentSequence); for(i = 0; i < DIM(aKeySequences); ++i) { if((wFlags & GETIN_RAWCTRL) && aKeySequences[i].bIsControlKey) { continue; } - seqlen=strlen(aKeySequences[i].pszSequence); - if(seqlen>CurrLen) { - if(CurrLen==0) { - if(strncmp(aKeySequences[i].pszSequence, szCurrentSequence, seqlen)==0) { + seqlen2=strlen(aKeySequences[i].pszSequence); + if(seqlen2>CurrLen) { + if(seqlen2<=seqlen1) { /* The sequence would be completed in buffer */ + if(strncmp(aKeySequences[i].pszSequence, szCurrentSequence, seqlen2)==0) { retval=i; CurrLen=seqlen; } } - else { - return(NO_MATCH); + else { /* Possible partial sequence */ + if(strncmp(aKeySequences[i].pszSequence, szCurrentSequence, seqlen1)==0) { + return(NO_MATCH); + } } } } -- GitLab