ObjIRC  Diff

Differences From Artifact [9205d72fe3]:

To Artifact [9f27229e45]:


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

58
59
60

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
+ (instancetype)IRCUserWithString: (OFString *)string
{
	return [[[self alloc] initWithString: string] autorelease];
}

- (instancetype)initWithString: (OFString *)string
{
	char *tmp2 = NULL;

	self = [super init];

	@try {
		char *tmp;

		tmp2 = OFStrDup(string.UTF8String);

		if ((tmp = strchr(tmp2, '@')) == NULL)
			@throw [OFInvalidFormatException exception];


		*tmp = '\0';
		_hostname = [[OFString alloc] initWithUTF8String: tmp + 1];


		if ((tmp = strchr(tmp2, '!')) == NULL)
			@throw [OFInvalidFormatException exception];

		*tmp = '\0';
		_username = [[OFString alloc] initWithUTF8String: tmp + 1];

		_nickname = [[OFString alloc] initWithUTF8String: tmp2];
	} @catch (id e) {
		[self release];
		@throw e;
	} @finally {
		if (tmp2 != NULL)
			free(tmp2);
	}

	return self;
}

- (void)dealloc
{







<
<



|

|
|
<


>
|
|

>
|


<
<
|
|



<
<
<







39
40
41
42
43
44
45


46
47
48
49
50
51
52

53
54
55
56
57
58
59
60
61
62


63
64
65
66
67



68
69
70
71
72
73
74
+ (instancetype)IRCUserWithString: (OFString *)string
{
	return [[[self alloc] initWithString: string] autorelease];
}

- (instancetype)initWithString: (OFString *)string
{


	self = [super init];

	@try {
		size_t pos;

		pos = [string rangeOfString: @"@"].location;
		if (pos == OFNotFound)

			@throw [OFInvalidFormatException exception];

		_hostname = [[string substringFromIndex: pos + 1] copy];

		string = [string substringToIndex: pos];

		pos = [string rangeOfString: @"!"].location;
		if (pos == OFNotFound)
			@throw [OFInvalidFormatException exception];



		_username = [[string substringFromIndex: pos + 1] copy];
		_nickname = [[string substringToIndex: pos] copy];
	} @catch (id e) {
		[self release];
		@throw e;



	}

	return self;
}

- (void)dealloc
{