Add a couple of tests for errors.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@24186 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2006-12-05 14:20:55 +00:00
parent acd9220a76
commit 1bf651cc0c
3 changed files with 32 additions and 15 deletions

View file

@ -1,3 +1,9 @@
2006-12-05 Richard Frith-Macdonald <rfm@gnu.org>
* NSURL.m: Check for missing scheme and return nil.
* NSString.m: Check for character conversion failure when
getting a CString.
2006-11-30 Richard Frith-Macdonald <rfm@gnu.org> 2006-11-30 Richard Frith-Macdonald <rfm@gnu.org>
* Source/GSHTTPURLHandle.m: Limit size of handle cache to 16 to * Source/GSHTTPURLHandle.m: Limit size of handle cache to 16 to

View file

@ -2564,7 +2564,15 @@ handle_printf_atsign (FILE *stream,
unsigned length = [d length]; unsigned length = [d length];
BOOL result = (length <= maxLength) ? YES : NO; BOOL result = (length <= maxLength) ? YES : NO;
if (length > maxLength) length = maxLength; if (d == nil)
{
[NSException raise: NSCharacterConversionException
format: @"Can't convert to C string."];
}
if (length > maxLength)
{
length = maxLength;
}
memcpy(buffer, [d bytes], length); memcpy(buffer, [d bytes], length);
buffer[length] = '\0'; buffer[length] = '\0';
return result; return result;

View file

@ -700,21 +700,24 @@ static unsigned urlAlign;
/* /*
* Set up scheme specific parsing options. * Set up scheme specific parsing options.
*/ */
if (buf->scheme != 0) if (buf->scheme == 0)
{
DESTROY(self); // Not a valid URL
NS_VALRETURN(nil);
}
if (strcmp(buf->scheme, "file") == 0)
{ {
if (strcmp(buf->scheme, "file") == 0) usesFragments = NO;
{ usesParameters = NO;
usesFragments = NO; usesQueries = NO;
usesParameters = NO; buf->isFile = YES;
usesQueries = NO; }
buf->isFile = YES; else if (strcmp(buf->scheme, "mailto") == 0)
} {
else if (strcmp(buf->scheme, "mailto") == 0) usesFragments = NO;
{ usesParameters = NO;
usesFragments = NO; usesQueries = NO;
usesParameters = NO;
usesQueries = NO;
}
} }
if (canBeGeneric == YES) if (canBeGeneric == YES)