https://bugs.documentfoundation.org/show_bug.cgi?id=145384

--- Comment #10 from Dave McKellar <dmckel...@gmail.com> ---
I did a test and my change does fix the code.  Sorry if this post is too big.
I made a test program.  First with the original code and some print's:

#include <stdio.h>
#include <ctype.h>

void convertName(const char *name) {
        printf("name in=%s\n", name);
        for (const char *p = name; *p; p++) {
                char cChar = *p;
                if ((cChar<'A' || cChar>'Z') && (cChar<'a' || cChar>'z'))
                        break;
                cChar -= 'A';
                if( cChar >= 26 )
                        cChar -= 'a' - '[';
                printf("out cChar=0x%02x\n", cChar);
        }
        printf("\n");
}

int main() {
        convertName("A55");
        convertName("a55");
        return 0;
}

Which prints out:

name in=A55
out cChar=0x00

name in=a55
out cChar=0x1a

In other words, lowercase and uppercase get different results.

Then I added one toupper() line:

#include <stdio.h>
#include <ctype.h>

void convertName(const char *name) {
        printf("name in=%s\n", name);
        for (const char *p = name; *p; p++) {
                char cChar = *p;
                if ((cChar<'A' || cChar>'Z') && (cChar<'a' || cChar>'z'))
                        break;
                if (islower(cChar)) cChar = toupper(cChar); // NEW NEW
                cChar -= 'A';
                if( cChar >= 26 )
                        cChar -= 'a' - '[';
                printf("out cChar=0x%02x\n", cChar);
        }
        printf("\n");
}

int main() {
        convertName("A55");
        convertName("a55");
        return 0;
}

It has the same output for uppercase and lowercase:

name in=A55
out cChar=0x00

name in=a55
out cChar=0x00

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to