Introduction
Introduction Statistics Contact Development Disclaimer Help
tFix style files handling: stop leaking strings. - surf - customized build of s…
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit d84fe71094e5eb2598344da5c6a1d6f64381142c
parent d486169fa47c0aa2c038df81fe23232a1cefff4b
Author: Quentin Rameau <[email protected]>
Date: Sat, 31 Oct 2015 12:34:31 +0100
Fix style files handling: stop leaking strings.
Everytime getstyle() was being called, we returned newly allocated
strings without ever freing them.
Now uri stylefiles only get allocated once at setup().
Signed-off-by: Christoph Lohmann <[email protected]>
Diffstat:
M surf.c | 36 +++++++++++++++++++----------…
1 file changed, 22 insertions(+), 14 deletions(-)
---
diff --git a/surf.c b/surf.c
t@@ -154,7 +154,7 @@ static const char *getatom(Client *c, int a);
static void gettogglestat(Client *c);
static void getpagestat(Client *c);
static char *geturi(Client *c);
-static gchar *getstyle(const char *uri);
+static const gchar *getstyle(const char *uri);
static void handleplumb(Client *c, WebKitWebView *w, const gchar *uri);
t@@ -645,20 +645,21 @@ geturi(Client *c)
return uri;
}
-gchar *
+const gchar *
getstyle(const char *uri)
{
int i;
if (stylefile != NULL)
- return g_strconcat("file://", stylefile, NULL);
+ return stylefile;
for (i = 0; i < LENGTH(styles); i++) {
if (styles[i].regex && !regexec(&(styles[i].re), uri, 0,
NULL, 0))
- return g_strconcat("file://", styles[i].style, NULL);
+ return styles[i].style;
}
- return g_strdup("");
+
+ return "";
}
void
t@@ -1285,8 +1286,8 @@ void
setup(void)
{
int i;
- char *proxy;
- char *new_proxy;
+ char *proxy, *new_proxy;
+ char *styledirfile, *stylepath;
SoupURI *puri;
SoupSession *s;
GError *error = NULL;
t@@ -1306,8 +1307,8 @@ setup(void)
cookiefile = buildfile(cookiefile);
scriptfile = buildfile(scriptfile);
cachefolder = buildpath(cachefolder);
- styledir = buildpath(styledir);
if (stylefile == NULL) {
+ styledir = buildpath(styledir);
for (i = 0; i < LENGTH(styles); i++) {
if (regcomp(&(styles[i].re), styles[i].regex,
REG_EXTENDED)) {
t@@ -1316,11 +1317,19 @@ setup(void)
styles[i].regex);
styles[i].regex = NULL;
}
- styles[i].style = buildfile(g_strconcat(styledir, "/",
- styles[i].style, NULL));
+ styledirfile = g_strconcat(styledir, "/",
+ styles[i].style, NULL);
+ stylepath = buildfile(styledirfile);
+ styles[i].style = g_strconcat("file://", stylepath,
+ NULL);
+ g_free(styledirfile);
+ g_free(stylepath);
}
+ g_free(styledir);
} else {
- stylefile = buildfile(stylefile);
+ stylepath = buildfile(stylefile);
+ stylefile = g_strconcat("file://", stylepath, NULL);
+ g_free(stylepath);
}
/* request handler */
t@@ -1523,11 +1532,10 @@ void
togglestyle(Client *c, const Arg *arg)
{
WebKitWebSettings *settings = webkit_web_view_get_settings(c->view);
- char *uri;
enablestyles = !enablestyles;
- uri = enablestyles ? getstyle(geturi(c)) : g_strdup("");
- g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL);
+ g_object_set(G_OBJECT(settings), "user-stylesheet-uri",
+ enablestyles ? getstyle(geturi(c)) : "", NULL);
updatetitle(c);
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.