Download raw body.
got: parse.y: Remove superfluous strdup(3) calls
Hi
In the grammar (for gotweb and got-read-gotconfig) $2 points to a
freshly allocated string. This string is then duplicated and the
original ($2) is freed. Simplify this by assigning $2 directly. Also
something similar happens in yyerror, so this is changed as well.
Or am I overlooking something?
Best,
Martin
diff 1dd93b2a37823ef322c22aa1a8ff94c53fb25186 /home/puffy/test_conf
blob - 2d9864e81b2f1c9a6adb6601a6a49a023d906ba6
file + gotweb/parse.y
--- gotweb/parse.y
+++ gotweb/parse.y
@@ -118,71 +118,29 @@ boolean : STRING {
}
;
main : GOT_REPOS_PATH STRING {
- gw_conf->got_repos_path = strdup($2);
- if (gw_conf->got_repos_path == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ gw_conf->got_repos_path = $2;
}
| GOT_WWW_PATH STRING {
- gw_conf->got_www_path = strdup($2);
- if (gw_conf->got_www_path == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ gw_conf->got_www_path = $2;
}
| GOT_MAX_REPOS NUMBER {
if ($2 > 0)
gw_conf->got_max_repos = $2;
}
| GOT_SITE_NAME STRING {
- gw_conf->got_site_name = strdup($2);
- if (gw_conf->got_site_name == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ gw_conf->got_site_name = $2;
}
| GOT_SITE_OWNER STRING {
- gw_conf->got_site_owner = strdup($2);
- if (gw_conf->got_site_owner == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ gw_conf->got_site_owner = $2;
}
| GOT_SITE_LINK STRING {
- gw_conf->got_site_link = strdup($2);
- if (gw_conf->got_site_link == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ gw_conf->got_site_link = $2;
}
| GOT_LOGO STRING {
- gw_conf->got_logo = strdup($2);
- if (gw_conf->got_logo== NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ gw_conf->got_logo = $2;
}
| GOT_LOGO_URL STRING {
- gw_conf->got_logo_url = strdup($2);
- if (gw_conf->got_logo_url== NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ gw_conf->got_logo_url = $2;
}
| GOT_SHOW_SITE_OWNER boolean {
gw_conf->got_show_site_owner = $2;
@@ -232,9 +190,8 @@ yyerror(const char *fmt, ...)
gerror = got_error_from_errno("asprintf");
return(0);
}
- gerror = got_error_msg(GOT_ERR_PARSE_CONFIG, strdup(err));
+ gerror = got_error_msg(GOT_ERR_PARSE_CONFIG, err);
free(msg);
- free(err);
return(0);
}
blob - f1fe63531f72a34ed515e9fb73cfe9c8c377d1b9
file + libexec/got-read-gotconfig/parse.y
--- libexec/got-read-gotconfig/parse.y
+++ libexec/got-read-gotconfig/parse.y
@@ -192,31 +192,13 @@ remoteopts2 : remoteopts2 remoteopts1 nl
| remoteopts1 optnl
;
remoteopts1 : REPOSITORY STRING {
- remote->repository = strdup($2);
- if (remote->repository == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->repository = $2;
}
| SERVER STRING {
- remote->server = strdup($2);
- if (remote->server == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->server = $2;
}
| PROTOCOL STRING {
- remote->protocol = strdup($2);
- if (remote->protocol == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->protocol = $2;
}
| MIRROR_REFERENCES boolean {
remote->mirror_references = $2;
@@ -267,31 +249,13 @@ fetchopts2 : fetchopts2 fetchopts1 nl
| fetchopts1 optnl
;
fetchopts1 : REPOSITORY STRING {
- remote->fetch_config->repository = strdup($2);
- if (remote->fetch_config->repository == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->fetch_config->repository = $2;
}
| SERVER STRING {
- remote->fetch_config->server = strdup($2);
- if (remote->fetch_config->server == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->fetch_config->server = $2;
}
| PROTOCOL STRING {
- remote->fetch_config->protocol = strdup($2);
- if (remote->fetch_config->protocol == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->fetch_config->protocol = $2;
}
| PORT portplain {
remote->fetch_config->port = $2;
@@ -307,31 +271,13 @@ sendopts2 : sendopts2 sendopts1 nl
| sendopts1 optnl
;
sendopts1 : REPOSITORY STRING {
- remote->send_config->repository = strdup($2);
- if (remote->send_config->repository == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->send_config->repository = $2;
}
| SERVER STRING {
- remote->send_config->server = strdup($2);
- if (remote->send_config->server == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->send_config->server = $2;
}
| PROTOCOL STRING {
- remote->send_config->protocol = strdup($2);
- if (remote->send_config->protocol == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->send_config->protocol = $2;
}
| PORT portplain {
remote->send_config->port = $2;
@@ -349,26 +295,14 @@ remote : REMOTE STRING {
yyerror("%s", error->msg);
YYERROR;
}
- remote->name = strdup($2);
- if (remote->name == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ remote->name = $2;
} '{' optnl remoteopts2 '}' {
TAILQ_INSERT_TAIL(&gotconfig.remotes, remote, entry);
gotconfig.nremotes++;
}
;
author : AUTHOR STRING {
- gotconfig.author = strdup($2);
- if (gotconfig.author == NULL) {
- free($2);
- yyerror("strdup");
- YYERROR;
- }
- free($2);
+ gotconfig.author = $2;
}
;
optnl : '\n' optnl
@@ -404,9 +338,8 @@ yyerror(const char *fmt, ...)
gerror = got_error_from_errno("asprintf");
return(0);
}
- gerror = got_error_msg(GOT_ERR_PARSE_CONFIG, strdup(err));
+ gerror = got_error_msg(GOT_ERR_PARSE_CONFIG, err);
free(msg);
- free(err);
return(0);
}
int
got: parse.y: Remove superfluous strdup(3) calls