some more compiler attributes
make sure all textcode/scan_* routines work if dest or destlen is NULL
This commit is contained in:
@@ -63,11 +63,11 @@ size_t scan_jsonescape(const char *src,char *dest,size_t *destlen) {
|
||||
++written;
|
||||
}
|
||||
done:
|
||||
*destlen=written;
|
||||
if (destlen) *destlen=written;
|
||||
return i;
|
||||
abort:
|
||||
if (prev!=(unsigned int)-1) i-=6; // if we abort and there still was an open surrogate pair, cancel it
|
||||
*destlen=written;
|
||||
if (destlen) *destlen=written;
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,16 +8,16 @@ size_t scan_quotedprintable(const char *src,char *dest,size_t *destlen) {
|
||||
if (s[i]=='=') {
|
||||
int j=scan_fromhex(s[i+1]);
|
||||
if (j<0) break;
|
||||
dest[written]=j<<4;
|
||||
if (dest) dest[written]=j<<4;
|
||||
j=scan_fromhex(s[i+2]);
|
||||
if (j<0) break;
|
||||
dest[written]|=j;
|
||||
if (dest) dest[written]|=j;
|
||||
i+=2;
|
||||
} else {
|
||||
dest[written]=s[i];
|
||||
if (dest) dest[written]=s[i];
|
||||
}
|
||||
++written;
|
||||
}
|
||||
*destlen=written;
|
||||
if (destlen) *destlen=written;
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -12,17 +12,17 @@ static size_t inner_scan_urlencoded(const char *src,char *dest,size_t *destlen,i
|
||||
c=j<<4;
|
||||
j=scan_fromhex(s[i+2]);
|
||||
if (j<0) break;
|
||||
dest[written]=c|j;
|
||||
if (dest) dest[written]=c|j;
|
||||
i+=2;
|
||||
} else if (s[i]=='+' && plus)
|
||||
dest[written]=' ';
|
||||
else if (s[i]<=' ' || s[i]=='?' || s[i]=='&')
|
||||
} else if (s[i]=='+' && plus) {
|
||||
if (dest) dest[written]=' ';
|
||||
} else if (s[i]<=' ' || s[i]=='?' || s[i]=='&')
|
||||
break; /* invalid input */
|
||||
else
|
||||
dest[written]=s[i];
|
||||
if (dest) dest[written]=s[i];
|
||||
++written;
|
||||
}
|
||||
*destlen=written;
|
||||
if (destlen) *destlen=written;
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,13 +8,13 @@ size_t scan_yenc(const char *src,char *dest,size_t *destlen) {
|
||||
if (s[i]=='=') {
|
||||
++i;
|
||||
if (s[i]=='y') break;
|
||||
dest[written]=s[i]-64-42;
|
||||
if (dest) dest[written]=s[i]-64-42;
|
||||
} else if (s[i]=='\n' || s[i]=='\r' || s[i]=='\0')
|
||||
break;
|
||||
else
|
||||
dest[written]=s[i]-42;
|
||||
if (dest) dest[written]=s[i]-42;
|
||||
++written;
|
||||
}
|
||||
*destlen=written;
|
||||
if (destlen) *destlen=written;
|
||||
return i;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user