replaced malloc by xmalloc