aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/dix/atom.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/dix/atom.c')
-rw-r--r--nx-X11/programs/Xserver/dix/atom.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/nx-X11/programs/Xserver/dix/atom.c b/nx-X11/programs/Xserver/dix/atom.c
index fdacb2a6b..d569c2314 100644
--- a/nx-X11/programs/Xserver/dix/atom.c
+++ b/nx-X11/programs/Xserver/dix/atom.c
@@ -62,7 +62,7 @@ typedef struct _Node {
struct _Node *left, *right;
Atom a;
unsigned int fingerPrint;
- char *string;
+ const char *string;
} NodeRec, *NodePtr;
static Atom lastAtom = None;
@@ -116,13 +116,11 @@ MakeAtom(const char *string, unsigned len, Bool makeit)
}
else
{
- nd->string = (char *) malloc(len + 1);
+ nd->string = strndup(string, len);
if (!nd->string) {
free(nd);
return BAD_RESOURCE;
}
- strncpy(nd->string, string, (int)len);
- nd->string[len] = 0;
}
if ((lastAtom + 1) >= tableLength) {
NodePtr *table;
@@ -131,7 +129,8 @@ MakeAtom(const char *string, unsigned len, Bool makeit)
tableLength * (2 * sizeof(NodePtr)));
if (!table) {
if (nd->string != string)
- free(nd->string);
+ /* nd->string has been strdup'ed */
+ free((char *)nd->string);
free(nd);
return BAD_RESOURCE;
}
@@ -155,7 +154,7 @@ ValidAtom(Atom atom)
return (atom != None) && (atom <= lastAtom);
}
-char *
+const char *
NameForAtom(Atom atom)
{
NodePtr node;
@@ -178,7 +177,7 @@ FreeAtom(NodePtr patom)
if(patom->right)
FreeAtom(patom->right);
if (patom->a > XA_LAST_PREDEFINED)
- free(patom->string);
+ free((char *)patom->string);
free(patom);
}