From de446b41a3d05c0fdc4521cf6d93df70ab88891f Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 17 Aug 2001 00:17:58 +0000 Subject: [PATCH] aha! oops :) SVN revision: 5186 --- src/api.c | 4 ++-- src/font.c | 13 +++++++++++++ src/font.h | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/api.c b/src/api.c index cb9721f..906bdfb 100644 --- a/src/api.c +++ b/src/api.c @@ -2605,8 +2605,8 @@ imlib_add_path_to_font_path(const char *path) { if (!ctx) ctx = imlib_context_new(); CHECK_PARAM_POINTER("imlib_add_path_to_font_path", "path", path); - __imlib_del_font_path(path); - __imlib_add_font_path(path); + if (!__imlib_font_path_exists(path)) + __imlib_add_font_path(path); } void diff --git a/src/font.c b/src/font.c index 804b5f0..6fe9b18 100644 --- a/src/font.c +++ b/src/font.c @@ -194,6 +194,7 @@ __imlib_del_font_path(const char *path) { if (!strcmp(path, fpath[i])) { + if (fpath[i]) free(fpath[i]); fpath_num--; for (j = i; j < fpath_num; j++) fpath[j] = fpath[j + 1]; @@ -208,6 +209,18 @@ __imlib_del_font_path(const char *path) } } +int +__imlib_font_path_exists(const char *path) +{ + int i; + + for (i = 0; i < fpath_num; i++) + { + if (!strcmp(path, fpath[i])) return 1; + } + return 0; +} + char ** __imlib_list_font_path(int *num_ret) { diff --git a/src/font.h b/src/font.h index 54b6215..54201e7 100644 --- a/src/font.h +++ b/src/font.h @@ -158,6 +158,7 @@ TT_Raster_Map *__imlib_create_font_raster(int width, int height); void __imlib_destroy_font_raster(TT_Raster_Map * rmap); void __imlib_add_font_path(const char *path); void __imlib_del_font_path(const char *path); +int __imlib_font_path_exists(const char *path); char **__imlib_list_font_path(int *num_ret); ImlibFont *__imlib_find_cached_font(const char *ttffontname, const char *xfontname, int mode); ImlibFont *__imlib_load_font(const char *fontname);