翻舊帳

2017年11月24日 星期五

2017年10月13日 星期五

free(): invalid next size (fast)

我參考Linux man page的code:
#define _GNU_SOURCE
#include
#include

int
main(void)
{
FILE *fp;
char *line = NULL;
size_t len = 0;
ssize_t read;

fp = fopen("/etc/motd", "r");
if (fp == NULL)
exit(EXIT_FAILURE);

while ((read = getline(&line, &len, fp)) != -1) {
printf("Retrieved line of length %zu :\n", read);
printf("%s", line);
}

free(line);
exit(EXIT_SUCCESS);
}

針對getline()產生的line buffer, 在最後將它free, 卻得到free(): invalid next size (fast).

最後我改用另一種寫法, 先malloc一塊夠大的buffer給line pointer, 然後, 然後就沒有error了.
len = 512;
line = malloc(len);
while( (ret = getline(&line, (size_t *)&len, fp)) != -1 ) {
if(line[0] == '#') continue; //comment
}
if(line != NULL) free(line);

2017年9月1日 星期五

編譯 toolchain, 出現 texi 相關的文件 error

output/toolchain/gcc-4.3.5/gcc/doc/cppopts.texi:757: @itemx must follow @item
make[2]: *** [doc/cpp.info] Error 1

編譯 buildroot 時, 遇到的問題.
這個問題是因為 textinfo 版本太新所造成的.
解法在此: https://git.busybox.net/buildroot/commit/?id=62322acb2ce186d544ab21fe253ccc8561a68a48

2017年8月31日 星期四

編譯的時候, 出現 undefined reference 錯誤

1. 沒有指定 library (-l)
2. 沒有指向 library 的目錄 (-L)
3. 參考到的 library 版本有問題
4. 參考路徑的順序有錯

第四點比較玄奇, 沒想到的話會花一點時間.
有可能參考路徑中有不只一個同名的 library, 但是這幾個檔案也許不是同一個編譯器做出來的, 也許不是同一個版本產生出來的, 也許是make clean的時候忘記去清掉上一次編譯出來的檔案.

2017年7月27日 星期四

Our Escape XVIII : 一起耍廢與假掰吧! 泰國沙美放空團 -- 前言

應該是去年年底, 大夥兒在墾丁聚會時, 林醫師提起的吧?
他說泰國有個小島, 渡假村不錯, 遊客也不多, 有機會希望能夠湊一團, 大夥兒一起去玩一趟.
於是聚會結束後, 墾丁聊天室莫名其妙地就被改成"5天4夜泰國親子團".

原本大家應該也只是把這個聊天室名稱當作是個期望, 有個念想, 當真的沒幾個.

不過, 我很容易認真.

所以, 五月初, 在計畫本年度的出國旅遊時, 我往聊天室丟了個問句:"泰國團今年有要安排嗎? 沒有的話我要自己排行程了!"
然後, 一切就這樣漸漸成形了.

感謝雅芸花時間花精神幫大家找好了旅行社, 安排了行程.
感謝各位同窗排除萬難, 把這一段時間硬是空了出來.
感謝老天幫忙, 讓颱風在我們離開高雄後才到達.

沙美島, 我們來了!