case FcOpPlus:
v.type = FcTypeString;
str = FcStrPlus (vl.u.s, vr.u.s);
- v.u.s = FcSharedStr (str);
+ v.u.s = FcStrdup (str);
FcStrFree (str);
if (!v.u.s)
if (!lang)
{
FcStrSet *langs = FcGetDefaultLangs ();
- lang = (FcChar8 *) strdup ((const char *) langs->strs[0]);
+ lang = FcStrdup (langs->strs[0]);
FcStrSetDestroy (langs);
if (!fc_atomic_ptr_cmpexch (&default_lang, NULL, lang)) {
* exact matched "en" has higher score than ll-cc.
*/
v2.type = FcTypeString;
- v2.u.s = FcSharedStr ((FcChar8 *)"en-us");
+ v2.u.s = FcStrdup ("en-us");
if (FcPatternObjectGet (pattern, FC_FAMILYLANG_OBJECT, 0, &v) == FcResultNoMatch)
{
FcPatternObjectAdd (pattern, FC_FAMILYLANG_OBJECT, namelang, FcTrue);
FcPatternObjectAdd (pattern, FC_FULLNAMELANG_OBJECT, namelang, FcTrue);
FcPatternObjectAddWithBinding (pattern, FC_FULLNAMELANG_OBJECT, v2, FcValueBindingWeak, FcTrue);
}
- FcSharedStrFree ((FcChar8 *) v2.u.s);
+ FcFree (v2.u.s);
}
#define __fcdefault__
#include "fcaliastail.h"
FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame
} FcValueBinding;
+#define FcStrdup(s) ((FcChar8 *) strdup ((const char *) (s)))
+#define FcFree(s) (free ((FcChar8 *) (s)))
+
/*
* Serialized data structures use only offsets instead of pointers
* A low bit of 1 indicates an offset.
FcPrivate FcBool
FcPatternAppend (FcPattern *p, FcPattern *s);
-FcPrivate const FcChar8 *
-FcSharedStr (const FcChar8 *name);
-
-FcPrivate FcBool
-FcSharedStrFree (FcChar8 *name);
-
FcPrivate FcChar32
FcStringHash (const FcChar8 *s);
low = 0;
mid = 0;
c = 1;
- object = (char *)FcSharedStr ((FcChar8 *)object);
+ object = strdup (object);
while (low <= high)
{
mid = (low + high) >> 1;
c = os->objects[mid] - object;
if (c == 0)
{
- FcSharedStrFree ((FcChar8 *)object);
+ FcFree (object);
return FcTrue;
}
if (c < 0)
if (os->objects)
{
for (i = 0; i < os->nobject; i++)
- FcSharedStrFree ((FcChar8 *)os->objects[i]);
+ FcFree (os->objects[i]);
free ((void *) os->objects);
}
v.u.i = atoi ((char *) string);
break;
case FcTypeString:
- v.u.s = FcSharedStr (string);
+ v.u.s = FcStrdup (string);
if (!v.u.s)
v.type = FcTypeVoid;
break;
if (!ot)
return NULL;
- ot->object.object = strdup (str);
+ ot->object.object = FcStrdup (str);
ot->object.type = -1;
ot->id = fc_atomic_int_add (next_id, +1);
ot->next = ots;
{
switch ((int) v.type) {
case FcTypeString:
- if (!FcSharedStrFree (v.u.s))
- FcStrFree ((FcChar8 *) v.u.s);
+ FcFree (v.u.s);
break;
case FcTypeMatrix:
FcMatrixFree ((FcMatrix *) v.u.m);
{
switch ((int) v.type) {
case FcTypeString:
- v.u.s = FcSharedStr (v.u.s);
+ v.u.s = FcStrdup (v.u.s);
if (!v.u.s)
v.type = FcTypeVoid;
break;
{
switch ((int) l->value.type) {
case FcTypeString:
- if (!FcSharedStrFree ((FcChar8 *)l->value.u.s))
- FcStrFree ((FcChar8 *)l->value.u.s);
+ FcFree (l->value.u.s);
break;
case FcTypeMatrix:
FcMatrixFree ((FcMatrix *)l->value.u.m);
}
-/* We used to have a shared-str pool. Removed to make thread-safety
- * work easier. My measurements show that the extra overhead is not
- * significant by any means. */
-
-FcBool
-FcSharedStrFree (FcChar8 *name)
-{
- free (name);
- return FcTrue;
-}
-
-const FcChar8 *
-FcSharedStr (const FcChar8 *name)
-{
- return strdup ((const char *) name);
-}
-
FcBool
FcPatternSerializeAlloc (FcSerialize *serialize, const FcPattern *pat)
{
FcChar8 *
FcStrCopy (const FcChar8 *s)
{
- int len;
- FcChar8 *r;
- if (!s)
- return 0;
- len = strlen ((char *) s) + 1;
- r = (FcChar8 *) malloc (len);
- if (!r)
- return 0;
- memcpy (r, s, len);
- return r;
+ return FcStrdup (s);
}
FcChar8 *
if (e)
{
e->op = FcOpString;
- e->u.sval = FcSharedStr (s);
+ e->u.sval = FcStrdup (s);
}
return e;
}
if (e)
{
e->op = FcOpConst;
- e->u.constant = FcSharedStr (constant);
+ e->u.constant = FcStrdup (constant);
}
return e;
}
case FcOpDouble:
break;
case FcOpString:
- FcSharedStrFree (e->u.sval);
+ FcFree (e->u.sval);
break;
case FcOpMatrix:
FcExprMatrixFree (e->u.mexpr);
case FcOpField:
break;
case FcOpConst:
- FcSharedStrFree (e->u.constant);
+ FcFree (e->u.constant);
break;
case FcOpAssign:
case FcOpAssignReplace:
switch ((int) vstack->tag) {
case FcVStackString:
- value.u.s = FcSharedStr (vstack->u.string);
+ value.u.s = FcStrdup (vstack->u.string);
if (value.u.s)
value.type = FcTypeString;
break;