Skip to content
Snippets Groups Projects
Commit 50902fbb authored by deuce's avatar deuce
Browse files

Fix ODGetCodeIfLongest(). Was returning NO_MATCH if there was any code

longer than the one in the buffer currently.
parent c0ed6061
No related branches found
No related tags found
No related merge requests found
...@@ -443,26 +443,30 @@ static int ODHaveStartOfSequence(WORD wFlags) ...@@ -443,26 +443,30 @@ static int ODHaveStartOfSequence(WORD wFlags)
static int ODGetCodeIfLongest(WORD wFlags) static int ODGetCodeIfLongest(WORD wFlags)
{ {
int CurrLen=0; int CurrLen=0;
int seqlen; int seqlen1;
int seqlen2;
int i; int i;
int retval=NO_MATCH;; int retval=NO_MATCH;;
if(wFlags & GETIN_RAW) if(wFlags & GETIN_RAW)
return(NO_MATCH); return(NO_MATCH);
seqlen1=strlen(szCurrentSequence);
for(i = 0; i < DIM(aKeySequences); ++i) { for(i = 0; i < DIM(aKeySequences); ++i) {
if((wFlags & GETIN_RAWCTRL) && aKeySequences[i].bIsControlKey) { if((wFlags & GETIN_RAWCTRL) && aKeySequences[i].bIsControlKey) {
continue; continue;
} }
seqlen=strlen(aKeySequences[i].pszSequence); seqlen2=strlen(aKeySequences[i].pszSequence);
if(seqlen>CurrLen) { if(seqlen2>CurrLen) {
if(CurrLen==0) { if(seqlen2<=seqlen1) { /* The sequence would be completed in buffer */
if(strncmp(aKeySequences[i].pszSequence, szCurrentSequence, seqlen)==0) { if(strncmp(aKeySequences[i].pszSequence, szCurrentSequence, seqlen2)==0) {
retval=i; retval=i;
CurrLen=seqlen; CurrLen=seqlen;
} }
} }
else { else { /* Possible partial sequence */
return(NO_MATCH); if(strncmp(aKeySequences[i].pszSequence, szCurrentSequence, seqlen1)==0) {
return(NO_MATCH);
}
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment