KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 98|回复: 1

getUsername方法不对

[复制链接]

1

主题

1

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2019-1-10 14:39:15 | 显示全部楼层 |阅读模式
   username没有赋值,wchar2char可能内存泄露

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

5

主题

4507

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2019-1-10 15:16:41 | 显示全部楼层
已修正
inline const char * getUsername()
{
#if KBE_PLATFORM == PLATFORM_WIN32
        DWORD dwSize = MAX_NAME;
        wchar_t wusername[MAX_NAME];
        ::GetUserNameW(wusername, &dwSize);

        static char username[MAX_NAME];
        memset(username, 0, MAX_NAME);

        if (dwSize > 0)
        {
                size_t outsize = 0;

                char* ptest = strutil::wchar2char((wchar_t*)&wusername, &outsize);

                if (outsize == 0)
                {
                        // 可能是中文名,不支持中文名称
                        strcpy(username, "error_name");
                }
                else
                {
                        if(ptest)
                                kbe_snprintf(username, MAX_NAME, "%s", ptest);
                }

                if (ptest)
                        free(ptest);
        }

        return username;
#else
        char * pUsername = cuserid(NULL);
        return pUsername ? pUsername : "";
#endif
}
QQ:3603661
3603661@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2019-3-22 21:23 , Processed in 0.055810 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表