Closed nickfox-taterli closed 5 years ago
这是有空指针传递进去了吧。
你的工程怎么操作?我试了 patch 打不上。
想请问,这个问题有什么进展吗?
空指针没有传递,只要不涉及snprintf进行%f修饰,就不会有问题,进行%d修饰同样的变量,没有问题.
我试下使用你的代码没有什么问题,最近解决了一些踩内存的问题,你可以试试 master 分支。
int HAL_Snprintf(char *str, const int len, const char *fmt, ...)
{
va_list args;
int rc;
va_start(args, fmt);
rc = vsnprintf(str, len, fmt, args);
va_end(args);
return rc;
}
/******************************************************************************
* FunctionName : app_main
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
*******************************************************************************/
void app_main(void)
{
char buf[128];
float f_data = 3.1415926;
HAL_Snprintf(buf, 128, "%s, %f\n", esp_get_idf_version(), f_data);
printf("SDK version:%s\n", buf);
}
Log 如下:
rom BLK0 of EFUSE
I (535) phy_init: phy ver: 1055_12
I (535) reset_reason: RTC reset 1 wakeup 0 store 0, reason is 1
SDK version:v3.2-dev-300-gb2f76cd9-dirty, 3.141593
由于长时间无更新,此问题暂时关闭;如果最新 master 仍有问题,欢迎 reopen issue。
Environment
git rev-parse --short HEAD
to get the commit id.):eb6d4f7fProblem Description
使用newlib(nano)时候不报告错误,但是snprintf不兼容标准snprintf,在%f的情况下出错.如果使用newlib(normal),则出现错误,由于单独测试snprintf下没有出现错误.所以对目前这个错误,不明白是什么原因,但是唯一差异是,使用newlib(nano)不出错,使用newlib(normal)出错,使用newlib(normal)但屏蔽snprintf相关代码,也不出错.
Expected Behavior
snprintf应正确处理字符串.
Actual Behavior
只要遇到了vsnprintf代码并且使用newlib(normal)就出错.
Steps to repropduce
Code to reproduce this issue
Debug Logs
Project Include elf and sdkconfig
https://send.firefox.com/download/5aa866a32947a9c1/#8mHzcV1xFABwv7QPYxeKng