Fossil SCM
Use strspn() to improve the performance of validate16().
Commit
c550d6e0215e33e5e42916aebb742e837c41d311c09247dbacafb14cad9244cc
Parent
52211ccc2f90d33…
1 file changed
+3
+3
| --- src/encode.c | ||
| +++ src/encode.c | ||
| @@ -646,10 +646,13 @@ | ||
| 646 | 646 | ** If any invalid characters appear in the string, return false. |
| 647 | 647 | */ |
| 648 | 648 | int validate16(const char *zIn, int nIn){ |
| 649 | 649 | int i; |
| 650 | 650 | if( nIn<0 ) nIn = (int)strlen(zIn); |
| 651 | + if( zIn[nIn]==0 ){ | |
| 652 | + return strspn(zIn,"0123456789abcdefABCDEF")==nIn; | |
| 653 | + } | |
| 651 | 654 | for(i=0; i<nIn; i++, zIn++){ |
| 652 | 655 | if( zDecode[zIn[0]&0xff]>63 ){ |
| 653 | 656 | return zIn[0]==0; |
| 654 | 657 | } |
| 655 | 658 | } |
| 656 | 659 |
| --- src/encode.c | |
| +++ src/encode.c | |
| @@ -646,10 +646,13 @@ | |
| 646 | ** If any invalid characters appear in the string, return false. |
| 647 | */ |
| 648 | int validate16(const char *zIn, int nIn){ |
| 649 | int i; |
| 650 | if( nIn<0 ) nIn = (int)strlen(zIn); |
| 651 | for(i=0; i<nIn; i++, zIn++){ |
| 652 | if( zDecode[zIn[0]&0xff]>63 ){ |
| 653 | return zIn[0]==0; |
| 654 | } |
| 655 | } |
| 656 |
| --- src/encode.c | |
| +++ src/encode.c | |
| @@ -646,10 +646,13 @@ | |
| 646 | ** If any invalid characters appear in the string, return false. |
| 647 | */ |
| 648 | int validate16(const char *zIn, int nIn){ |
| 649 | int i; |
| 650 | if( nIn<0 ) nIn = (int)strlen(zIn); |
| 651 | if( zIn[nIn]==0 ){ |
| 652 | return strspn(zIn,"0123456789abcdefABCDEF")==nIn; |
| 653 | } |
| 654 | for(i=0; i<nIn; i++, zIn++){ |
| 655 | if( zDecode[zIn[0]&0xff]>63 ){ |
| 656 | return zIn[0]==0; |
| 657 | } |
| 658 | } |
| 659 |