Replace _XkbDupString with Xstrdup
The two functions have identical semantics, including safely returning NULL when NULL is passed in (which POSIX strdup does not guarantee). Some callers could probably be adjusted to call libc strdup directly, when we know the input is non-NULL. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
parent
a4a2e814d5
commit
aac1b43566
|
@ -846,10 +846,6 @@ extern _X_EXPORT XkbGeometryPtr XkbLookupNamedGeometry(
|
||||||
Bool * /* shouldFree */
|
Bool * /* shouldFree */
|
||||||
);
|
);
|
||||||
|
|
||||||
extern _X_EXPORT char * _XkbDupString(
|
|
||||||
const char * /* str */
|
|
||||||
);
|
|
||||||
|
|
||||||
extern _X_EXPORT void XkbConvertCase(
|
extern _X_EXPORT void XkbConvertCase(
|
||||||
KeySym /* sym */,
|
KeySym /* sym */,
|
||||||
KeySym * /* lower */,
|
KeySym * /* lower */,
|
||||||
|
|
|
@ -391,8 +391,8 @@ Bool append = FALSE;
|
||||||
}
|
}
|
||||||
if (*words == '\0')
|
if (*words == '\0')
|
||||||
return FALSE;
|
return FALSE;
|
||||||
group->name = _XkbDupString(gname);
|
group->name = Xstrdup(gname);
|
||||||
group->words = _XkbDupString(words);
|
group->words = Xstrdup(words);
|
||||||
for (i = 1, words = group->words; *words; words++) {
|
for (i = 1, words = group->words; *words; words++) {
|
||||||
if ( *words == ' ') {
|
if ( *words == ' ') {
|
||||||
*words++ = '\0';
|
*words++ = '\0';
|
||||||
|
@ -443,16 +443,16 @@ Bool append = FALSE;
|
||||||
rule->flags|= XkbRF_Append;
|
rule->flags|= XkbRF_Append;
|
||||||
else
|
else
|
||||||
rule->flags|= XkbRF_Normal;
|
rule->flags|= XkbRF_Normal;
|
||||||
rule->model= _XkbDupString(tmp.name[MODEL]);
|
rule->model= Xstrdup(tmp.name[MODEL]);
|
||||||
rule->layout= _XkbDupString(tmp.name[LAYOUT]);
|
rule->layout= Xstrdup(tmp.name[LAYOUT]);
|
||||||
rule->variant= _XkbDupString(tmp.name[VARIANT]);
|
rule->variant= Xstrdup(tmp.name[VARIANT]);
|
||||||
rule->option= _XkbDupString(tmp.name[OPTION]);
|
rule->option= Xstrdup(tmp.name[OPTION]);
|
||||||
|
|
||||||
rule->keycodes= _XkbDupString(tmp.name[KEYCODES]);
|
rule->keycodes= Xstrdup(tmp.name[KEYCODES]);
|
||||||
rule->symbols= _XkbDupString(tmp.name[SYMBOLS]);
|
rule->symbols= Xstrdup(tmp.name[SYMBOLS]);
|
||||||
rule->types= _XkbDupString(tmp.name[TYPES]);
|
rule->types= Xstrdup(tmp.name[TYPES]);
|
||||||
rule->compat= _XkbDupString(tmp.name[COMPAT]);
|
rule->compat= Xstrdup(tmp.name[COMPAT]);
|
||||||
rule->geometry= _XkbDupString(tmp.name[GEOMETRY]);
|
rule->geometry= Xstrdup(tmp.name[GEOMETRY]);
|
||||||
|
|
||||||
rule->layout_num = rule->variant_num = 0;
|
rule->layout_num = rule->variant_num = 0;
|
||||||
for (i = 0; i < nread; i++) {
|
for (i = 0; i < nread; i++) {
|
||||||
|
@ -497,7 +497,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
|
||||||
|
|
||||||
memset((char *)mdefs, 0, sizeof(XkbRF_MultiDefsRec));
|
memset((char *)mdefs, 0, sizeof(XkbRF_MultiDefsRec));
|
||||||
mdefs->model = defs->model;
|
mdefs->model = defs->model;
|
||||||
mdefs->options = _XkbDupString(defs->options);
|
mdefs->options = Xstrdup(defs->options);
|
||||||
if (mdefs->options) squeeze_spaces(mdefs->options);
|
if (mdefs->options) squeeze_spaces(mdefs->options);
|
||||||
|
|
||||||
if (defs->layout) {
|
if (defs->layout) {
|
||||||
|
@ -506,7 +506,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
|
||||||
} else {
|
} else {
|
||||||
char *p;
|
char *p;
|
||||||
int i;
|
int i;
|
||||||
mdefs->layout[1] = _XkbDupString(defs->layout);
|
mdefs->layout[1] = Xstrdup(defs->layout);
|
||||||
if (mdefs->layout[1] == NULL)
|
if (mdefs->layout[1] == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
squeeze_spaces(mdefs->layout[1]);
|
squeeze_spaces(mdefs->layout[1]);
|
||||||
|
@ -530,7 +530,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
|
||||||
} else {
|
} else {
|
||||||
char *p;
|
char *p;
|
||||||
int i;
|
int i;
|
||||||
mdefs->variant[1] = _XkbDupString(defs->variant);
|
mdefs->variant[1] = Xstrdup(defs->variant);
|
||||||
if (mdefs->variant[1] == NULL)
|
if (mdefs->variant[1] == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
squeeze_spaces(mdefs->variant[1]);
|
squeeze_spaces(mdefs->variant[1]);
|
||||||
|
@ -566,7 +566,7 @@ Apply(char *src, char **dst)
|
||||||
*dst= _Concat(*dst, src);
|
*dst= _Concat(*dst, src);
|
||||||
} else {
|
} else {
|
||||||
if (*dst == NULL)
|
if (*dst == NULL)
|
||||||
*dst= _XkbDupString(src);
|
*dst= Xstrdup(src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5619,17 +5619,17 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
else fwant= stuff->want|stuff->need;
|
else fwant= stuff->want|stuff->need;
|
||||||
if ((!names.compat)&&
|
if ((!names.compat)&&
|
||||||
(fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) {
|
(fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) {
|
||||||
names.compat= _XkbDupString("%");
|
names.compat= Xstrdup("%");
|
||||||
}
|
}
|
||||||
if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) {
|
if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) {
|
||||||
names.types= _XkbDupString("%");
|
names.types= Xstrdup("%");
|
||||||
}
|
}
|
||||||
if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) {
|
if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) {
|
||||||
names.symbols= _XkbDupString("%");
|
names.symbols= Xstrdup("%");
|
||||||
}
|
}
|
||||||
geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0));
|
geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0));
|
||||||
if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) {
|
if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) {
|
||||||
names.geometry= _XkbDupString("%");
|
names.geometry= Xstrdup("%");
|
||||||
geom_changed= FALSE;
|
geom_changed= FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -221,15 +221,15 @@ static void
|
||||||
XkbSetRulesUsed(XkbRMLVOSet *rmlvo)
|
XkbSetRulesUsed(XkbRMLVOSet *rmlvo)
|
||||||
{
|
{
|
||||||
free(XkbRulesUsed);
|
free(XkbRulesUsed);
|
||||||
XkbRulesUsed= (rmlvo->rules?_XkbDupString(rmlvo->rules):NULL);
|
XkbRulesUsed= (rmlvo->rules?Xstrdup(rmlvo->rules):NULL);
|
||||||
free(XkbModelUsed);
|
free(XkbModelUsed);
|
||||||
XkbModelUsed= (rmlvo->model?_XkbDupString(rmlvo->model):NULL);
|
XkbModelUsed= (rmlvo->model?Xstrdup(rmlvo->model):NULL);
|
||||||
free(XkbLayoutUsed);
|
free(XkbLayoutUsed);
|
||||||
XkbLayoutUsed= (rmlvo->layout?_XkbDupString(rmlvo->layout):NULL);
|
XkbLayoutUsed= (rmlvo->layout?Xstrdup(rmlvo->layout):NULL);
|
||||||
free(XkbVariantUsed);
|
free(XkbVariantUsed);
|
||||||
XkbVariantUsed= (rmlvo->variant?_XkbDupString(rmlvo->variant):NULL);
|
XkbVariantUsed= (rmlvo->variant?Xstrdup(rmlvo->variant):NULL);
|
||||||
free(XkbOptionsUsed);
|
free(XkbOptionsUsed);
|
||||||
XkbOptionsUsed= (rmlvo->options?_XkbDupString(rmlvo->options):NULL);
|
XkbOptionsUsed= (rmlvo->options?Xstrdup(rmlvo->options):NULL);
|
||||||
if (XkbWantRulesProp)
|
if (XkbWantRulesProp)
|
||||||
QueueWorkProc(XkbWriteRulesProp,NULL,NULL);
|
QueueWorkProc(XkbWriteRulesProp,NULL,NULL);
|
||||||
return;
|
return;
|
||||||
|
@ -240,23 +240,23 @@ XkbSetRulesDflts(XkbRMLVOSet *rmlvo)
|
||||||
{
|
{
|
||||||
if (rmlvo->rules) {
|
if (rmlvo->rules) {
|
||||||
free(XkbRulesDflt);
|
free(XkbRulesDflt);
|
||||||
XkbRulesDflt= _XkbDupString(rmlvo->rules);
|
XkbRulesDflt= Xstrdup(rmlvo->rules);
|
||||||
}
|
}
|
||||||
if (rmlvo->model) {
|
if (rmlvo->model) {
|
||||||
free(XkbModelDflt);
|
free(XkbModelDflt);
|
||||||
XkbModelDflt= _XkbDupString(rmlvo->model);
|
XkbModelDflt= Xstrdup(rmlvo->model);
|
||||||
}
|
}
|
||||||
if (rmlvo->layout) {
|
if (rmlvo->layout) {
|
||||||
free(XkbLayoutDflt);
|
free(XkbLayoutDflt);
|
||||||
XkbLayoutDflt= _XkbDupString(rmlvo->layout);
|
XkbLayoutDflt= Xstrdup(rmlvo->layout);
|
||||||
}
|
}
|
||||||
if (rmlvo->variant) {
|
if (rmlvo->variant) {
|
||||||
free(XkbVariantDflt);
|
free(XkbVariantDflt);
|
||||||
XkbVariantDflt= _XkbDupString(rmlvo->variant);
|
XkbVariantDflt= Xstrdup(rmlvo->variant);
|
||||||
}
|
}
|
||||||
if (rmlvo->options) {
|
if (rmlvo->options) {
|
||||||
free(XkbOptionsDflt);
|
free(XkbOptionsDflt);
|
||||||
XkbOptionsDflt= _XkbDupString(rmlvo->options);
|
XkbOptionsDflt= Xstrdup(rmlvo->options);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -241,7 +241,7 @@ unsigned wantNames,wantConfig,wantDflts;
|
||||||
if (wantNames&XkmTypesMask) {
|
if (wantNames&XkmTypesMask) {
|
||||||
if (old_names->types!=None) {
|
if (old_names->types!=None) {
|
||||||
tmp= NameForAtom(old_names->types);
|
tmp= NameForAtom(old_names->types);
|
||||||
names->types= _XkbDupString(tmp);
|
names->types= Xstrdup(tmp);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
wantDflts|= XkmTypesMask;
|
wantDflts|= XkmTypesMask;
|
||||||
|
@ -251,7 +251,7 @@ unsigned wantNames,wantConfig,wantDflts;
|
||||||
if (wantNames&XkmCompatMapMask) {
|
if (wantNames&XkmCompatMapMask) {
|
||||||
if (old_names->compat!=None) {
|
if (old_names->compat!=None) {
|
||||||
tmp= NameForAtom(old_names->compat);
|
tmp= NameForAtom(old_names->compat);
|
||||||
names->compat= _XkbDupString(tmp);
|
names->compat= Xstrdup(tmp);
|
||||||
}
|
}
|
||||||
else wantDflts|= XkmCompatMapMask;
|
else wantDflts|= XkmCompatMapMask;
|
||||||
complete|= XkmCompatMapMask;
|
complete|= XkmCompatMapMask;
|
||||||
|
@ -260,13 +260,13 @@ unsigned wantNames,wantConfig,wantDflts;
|
||||||
if (old_names->symbols==None)
|
if (old_names->symbols==None)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
tmp= NameForAtom(old_names->symbols);
|
tmp= NameForAtom(old_names->symbols);
|
||||||
names->symbols= _XkbDupString(tmp);
|
names->symbols= Xstrdup(tmp);
|
||||||
complete|= XkmSymbolsMask;
|
complete|= XkmSymbolsMask;
|
||||||
}
|
}
|
||||||
if (wantNames&XkmKeyNamesMask) {
|
if (wantNames&XkmKeyNamesMask) {
|
||||||
if (old_names->keycodes!=None) {
|
if (old_names->keycodes!=None) {
|
||||||
tmp= NameForAtom(old_names->keycodes);
|
tmp= NameForAtom(old_names->keycodes);
|
||||||
names->keycodes= _XkbDupString(tmp);
|
names->keycodes= Xstrdup(tmp);
|
||||||
}
|
}
|
||||||
else wantDflts|= XkmKeyNamesMask;
|
else wantDflts|= XkmKeyNamesMask;
|
||||||
complete|= XkmKeyNamesMask;
|
complete|= XkmKeyNamesMask;
|
||||||
|
@ -275,7 +275,7 @@ unsigned wantNames,wantConfig,wantDflts;
|
||||||
if (old_names->geometry==None)
|
if (old_names->geometry==None)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
tmp= NameForAtom(old_names->geometry);
|
tmp= NameForAtom(old_names->geometry);
|
||||||
names->geometry= _XkbDupString(tmp);
|
names->geometry= Xstrdup(tmp);
|
||||||
complete|= XkmGeometryMask;
|
complete|= XkmGeometryMask;
|
||||||
wantNames&= ~XkmGeometryMask;
|
wantNames&= ~XkmGeometryMask;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,19 +51,6 @@ XkbInternAtom(char *str,Bool only_if_exists)
|
||||||
return MakeAtom(str,strlen(str),!only_if_exists);
|
return MakeAtom(str,strlen(str),!only_if_exists);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
|
||||||
_XkbDupString(const char *str)
|
|
||||||
{
|
|
||||||
char *new;
|
|
||||||
|
|
||||||
if (str==NULL)
|
|
||||||
return NULL;
|
|
||||||
new= calloc(strlen(str)+1,sizeof(char));
|
|
||||||
if (new)
|
|
||||||
strcpy(new,str);
|
|
||||||
return new;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***====================================================================***/
|
/***====================================================================***/
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
|
@ -845,9 +832,9 @@ int nRead=0;
|
||||||
doodad->text.height= doodadWire.text.height;
|
doodad->text.height= doodadWire.text.height;
|
||||||
doodad->text.color_ndx= doodadWire.text.color_ndx;
|
doodad->text.color_ndx= doodadWire.text.color_ndx;
|
||||||
nRead+= XkmGetCountedString(file,buf,100);
|
nRead+= XkmGetCountedString(file,buf,100);
|
||||||
doodad->text.text= _XkbDupString(buf);
|
doodad->text.text= Xstrdup(buf);
|
||||||
nRead+= XkmGetCountedString(file,buf,100);
|
nRead+= XkmGetCountedString(file,buf,100);
|
||||||
doodad->text.font= _XkbDupString(buf);
|
doodad->text.font= Xstrdup(buf);
|
||||||
break;
|
break;
|
||||||
case XkbIndicatorDoodad:
|
case XkbIndicatorDoodad:
|
||||||
doodad->indicator.shape_ndx= doodadWire.indicator.shape_ndx;
|
doodad->indicator.shape_ndx= doodadWire.indicator.shape_ndx;
|
||||||
|
@ -859,7 +846,7 @@ int nRead=0;
|
||||||
doodad->logo.color_ndx= doodadWire.logo.color_ndx;
|
doodad->logo.color_ndx= doodadWire.logo.color_ndx;
|
||||||
doodad->logo.shape_ndx= doodadWire.logo.shape_ndx;
|
doodad->logo.shape_ndx= doodadWire.logo.shape_ndx;
|
||||||
nRead+= XkmGetCountedString(file,buf,100);
|
nRead+= XkmGetCountedString(file,buf,100);
|
||||||
doodad->logo.logo_name= _XkbDupString(buf);
|
doodad->logo.logo_name= Xstrdup(buf);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* report error? */
|
/* report error? */
|
||||||
|
@ -1021,7 +1008,7 @@ XkbGeometrySizesRec sizes;
|
||||||
geom->width_mm= wireGeom.width_mm;
|
geom->width_mm= wireGeom.width_mm;
|
||||||
geom->height_mm= wireGeom.height_mm;
|
geom->height_mm= wireGeom.height_mm;
|
||||||
nRead+= XkmGetCountedString(file,buf,100);
|
nRead+= XkmGetCountedString(file,buf,100);
|
||||||
geom->label_font= _XkbDupString(buf);
|
geom->label_font= Xstrdup(buf);
|
||||||
if (wireGeom.num_properties>0) {
|
if (wireGeom.num_properties>0) {
|
||||||
char val[1024];
|
char val[1024];
|
||||||
for (i=0;i<wireGeom.num_properties;i++) {
|
for (i=0;i<wireGeom.num_properties;i++) {
|
||||||
|
|
Loading…
Reference in New Issue