/*
- * $RCSId: xc/lib/fontconfig/src/fcstr.c,v 1.10 2002/08/31 22:17:32 keithp Exp $
+ * fontconfig/src/fcstr.c
*
* Copyright © 2000 Keith Packard
*
}
/*
- * Does s1 contain an instance of s2 (ignoring case)?
+ * Does s1 contain an instance of s2 (ignoring blanks and case)?
*/
const FcChar8 *
{
FcChar8 *ret;
- ret = malloc (buf->len + 1);
+ if (buf->failed)
+ ret = NULL;
+ else
+ ret = malloc (buf->len + 1);
if (ret)
{
FcMemAlloc (FC_MEM_STRING, buf->len + 1);
FcChar8 *new;
int size;
+ if (buf->failed)
+ return FcFalse;
+
if (buf->allocated)
{
size = buf->size * 2;
if (slash)
{
switch (s - slash) {
+ case 1:
+ f -= 1; /* squash // and trim final / from file */
+ break;
case 2:
if (!strncmp ((char *) slash, "/.", 2))
{
char *dest = str;
char *end = str + len;
char last = 0;
-
+
+ if (*p == '\\')
+ {
+ *p = '/';
+ p++;
+ dest++;
+ }
while (p < end)
{
if (*p == '\\')
{
#ifdef _WIN32
FcChar8 full[FC_MAX_FILE_LEN + 2];
- FcChar8 basename[FC_MAX_FILE_LEN + 2];
int size = GetFullPathName (s, sizeof (full) -1,
- full,
- basename);
+ full, NULL);
if (size == 0)
perror ("GetFullPathName");
if (!strs)
return FcFalse;
FcMemAlloc (FC_MEM_STRSET, (set->size + 2) * sizeof (FcChar8 *));
- set->size = set->size + 1;
if (set->num)
memcpy (strs, set->strs, set->num * sizeof (FcChar8 *));
if (set->strs)
+ {
+ FcMemFree (FC_MEM_STRSET, (set->size + 1) * sizeof (FcChar8 *));
free (set->strs);
+ }
+ set->size = set->size + 1;
set->strs = strs;
}
set->strs[set->num++] = s;
for (i = 0; i < set->num; i++)
FcStrFree (set->strs[i]);
- FcMemFree (FC_MEM_STRSET, (set->size) * sizeof (FcChar8 *));
if (set->strs)
+ {
+ FcMemFree (FC_MEM_STRSET, (set->size + 1) * sizeof (FcChar8 *));
free (set->strs);
+ }
FcMemFree (FC_MEM_STRSET, sizeof (FcStrSet));
free (set);
}