<変更点の添付> - x_nameとfn->x_nameの値が同じ時、strdupで使用されるx_nameが freeされることがあるため、退避. *** font.c.orig 97年 2月11日(火) 17:52:27 --- font.c 97年 8月26日(火) 09:32:31 *************** *** 69,75 **** --- 69,90 ---- #endif { struct font_names * fn; + #ifdef __uxp__ + char * x_name_wrk; + char * ps_name_wrk; + #if defined(EUC_JP) + char * x_name2_wrk; + char * ps_name2_wrk; + #endif /* EUC_JP */ + x_name_wrk = strdup (x_name); + ps_name_wrk = strdup (ps_name); + #if defined(EUC_JP) + x_name2_wrk = strdup (x_name2); + ps_name2_wrk = strdup (ps_name2); + #endif /* EUC_JP */ + #endif + for (fn = font_names; fn; fn = fn->next) if (!stricmp(fn->oleo_name, oleo_name)) { *************** *** 92,97 **** --- 107,113 ---- fn->next = font_names; font_names = fn; } + #ifndef __uxp__ fn->x_name = strdup (x_name); fn->ps_name = strdup (ps_name); #if defined(EUC_JP) *************** *** 98,103 **** --- 114,133 ---- fn->x_name2 = strdup (x_name2); fn->ps_name2 = strdup (ps_name2); #endif /* EUC_JP */ + #else + fn->x_name = strdup (x_name_wrk); + fn->ps_name = strdup (ps_name_wrk); + #if defined(EUC_JP) + fn->x_name2 = strdup (x_name2_wrk); + fn->ps_name2 = strdup (ps_name2_wrk); + #endif /* EUC_JP */ + free(x_name_wrk); + free(ps_name_wrk); + #if defined(EUC_JP) + free(x_name2_wrk); + free(ps_name2_wrk); + #endif /* EUC_JP */ + #endif }