So when I said I wouldn't tinker with the source... I lied. The lines at fault are: char *name = uim_get_im_name(uc, i); char *lang = uim_get_im_language(uc, i); I guess what happens is uin_get_im_name and uim_get_im_language should have called malloc() or something? At any rate, I haven't got a clue as to how I should fix this. -Dave Oftedal