Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Cool Fire
hexchat
Commits
c80858f9
Commit
c80858f9
authored
Oct 02, 2012
by
bviktor
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #115 from RichardHitt/master
Fix memory leak related to url grabbing
parents
6e3efe26
62903cd1
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
12 deletions
+23
-12
src/common/cfgfiles.c
src/common/cfgfiles.c
+1
-1
src/common/tree.c
src/common/tree.c
+3
-1
src/common/tree.h
src/common/tree.h
+1
-1
src/common/url.c
src/common/url.c
+18
-9
No files found.
src/common/cfgfiles.c
View file @
c80858f9
...
...
@@ -744,7 +744,7 @@ load_config (void)
prefs
.
input_tray_priv
=
prefs
.
input_tray_hilight
=
1
;
prefs
.
autodccsend
=
2
;
/* browse mode */
prefs
.
url_grabber
=
1
;
prefs
.
url_grabber_limit
=
5
0
;
/* 0 means unlimited */
prefs
.
url_grabber_limit
=
0
;
/* 0 means unlimited */
prefs
.
text_search_follow
=
1
;
#ifdef WIN32
prefs
.
identd
=
1
;
...
...
src/common/tree.c
View file @
c80858f9
...
...
@@ -150,10 +150,11 @@ tree_find (tree *t, void *key, tree_cmp_func *cmp, void *data, int *pos)
return
mybsearch
(
key
,
&
t
->
array
[
0
],
t
->
elements
,
cmp
,
data
,
pos
);
}
void
void
*
tree_remove_at_pos
(
tree
*
t
,
int
pos
)
{
int
post_bytes
;
void
*
ret
=
t
->
array
[
pos
];
t
->
elements
--
;
if
(
pos
!=
t
->
elements
)
...
...
@@ -161,6 +162,7 @@ tree_remove_at_pos (tree *t, int pos)
post_bytes
=
(
t
->
elements
-
pos
)
*
sizeof
(
void
*
);
memmove
(
&
t
->
array
[
pos
],
&
t
->
array
[
pos
+
1
],
post_bytes
);
}
return
ret
;
}
int
...
...
src/common/tree.h
View file @
c80858f9
...
...
@@ -10,7 +10,7 @@ tree *tree_new (tree_cmp_func *cmp, void *data);
void
tree_destroy
(
tree
*
t
);
void
*
tree_find
(
tree
*
t
,
void
*
key
,
tree_cmp_func
*
cmp
,
void
*
data
,
int
*
pos
);
int
tree_remove
(
tree
*
t
,
void
*
key
,
int
*
pos
);
void
tree_remove_at_pos
(
tree
*
t
,
int
pos
);
void
*
tree_remove_at_pos
(
tree
*
t
,
int
pos
);
void
tree_foreach
(
tree
*
t
,
tree_traverse_func
*
func
,
void
*
data
);
int
tree_insert
(
tree
*
t
,
void
*
key
);
void
tree_append
(
tree
*
t
,
void
*
key
);
...
...
src/common/url.c
View file @
c80858f9
...
...
@@ -31,6 +31,7 @@
#endif
void
*
url_tree
=
NULL
;
GTree
*
url_btree
=
NULL
;
static
int
...
...
@@ -46,6 +47,8 @@ url_clear (void)
tree_foreach
(
url_tree
,
(
tree_traverse_func
*
)
url_free
,
NULL
);
tree_destroy
(
url_tree
);
url_tree
=
NULL
;
g_tree_destroy
(
url_btree
);
url_btree
=
NULL
;
}
static
int
...
...
@@ -80,11 +83,7 @@ url_autosave (void)
static
int
url_find
(
char
*
urltext
)
{
int
pos
;
if
(
tree_find
(
url_tree
,
urltext
,
(
tree_cmp_func
*
)
g_ascii_strcasecmp
,
NULL
,
&
pos
))
return
1
;
return
0
;
return
(
g_tree_lookup_extended
(
url_btree
,
urltext
,
NULL
,
NULL
));
}
static
void
...
...
@@ -110,15 +109,18 @@ url_add (char *urltext, int len)
if
(
data
[
len
-
1
]
==
')'
)
/* chop trailing ) */
data
[
len
-
1
]
=
0
;
if
(
!
url_tree
)
{
url_tree
=
tree_new
((
tree_cmp_func
*
)
strcasecmp
,
NULL
);
url_btree
=
g_tree_new
((
GCompareFunc
)
strcasecmp
);
}
if
(
url_find
(
data
))
{
free
(
data
);
return
;
}
if
(
!
url_tree
)
url_tree
=
tree_new
((
tree_cmp_func
*
)
g_ascii_strcasecmp
,
NULL
);
size
=
tree_size
(
url_tree
);
/* 0 is unlimited */
if
(
prefs
.
url_grabber_limit
>
0
&&
size
>=
prefs
.
url_grabber_limit
)
...
...
@@ -127,10 +129,17 @@ url_add (char *urltext, int len)
xchat is running */
size
-=
prefs
.
url_grabber_limit
;
for
(;
size
>
0
;
size
--
)
tree_remove_at_pos
(
url_tree
,
0
);
{
char
*
pos
;
pos
=
tree_remove_at_pos
(
url_tree
,
0
);
g_tree_remove
(
url_btree
,
pos
);
free
(
pos
);
}
}
tree_append
(
url_tree
,
data
);
g_tree_insert
(
url_btree
,
data
,
GINT_TO_POINTER
(
tree_size
(
url_tree
)
-
1
));
fe_url_add
(
data
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment