Hari ini sebenarnya aku agak bingung mau ngerjain apa. Kepikiran sih untuk ngecek TA-nya Elen, tapi ternyata source code yang dia kasih belum ada, jadi aku cuma terima dokument TA dia. Paling-paling aku rencana ikutan mempelajari DVD Player, terus ngerjain user guide untuk D'LaGate.
Eh, pas Dillah ngetest D'LaGate lagi, ketemu masalah. Kalau ada pesan yang numpuk di HP, tidak terproses dengan benar. Malahan sms itu udah ditandai dibaca, tapi nggak kehapus .. wah, kenapa ya?
Akhirnya aku ingat dulu Pak Iwan pernah melemparkan kasus ini. Jadi saat Comm membaca SMS masuk, yang dibaca adalah semua SMS, bukan satu-per-satu, jadi perlu di parsing. Wah kayaknya ini dia penyebabnya. Kerjaan lagi buatku .... he he he ... :(
Akhirnya ketemu juga problemnya. Setelah di-debug, (dan menghabiskan banyak SMS -- untunnya Dillah pakai SMS gratisan dari IM3), akhirnya ketemu juga masalah yang membuat D'La Gate nge-hung ketika baca banyak SMS diterima.
Penyebabnya adalah pengisian nilai '\0' ke sebuah pointer, tanpa memeriksa isi dari pointer itu. Jadi sebelumnya ada perintah
Nah, kalau SMS cuma satu, proses ini gak ada masalah, tapi waktu ngambil beberapa SMS yang belum dibaca, terjadi error karena tmp1 hasilnya NULL. Jadi harus ditambahin pengecekan apakah NULL atau nggak.
Hmm ... belajar satu hal lagi. Siiip!
Eh, pas Dillah ngetest D'LaGate lagi, ketemu masalah. Kalau ada pesan yang numpuk di HP, tidak terproses dengan benar. Malahan sms itu udah ditandai dibaca, tapi nggak kehapus .. wah, kenapa ya?
Akhirnya aku ingat dulu Pak Iwan pernah melemparkan kasus ini. Jadi saat Comm membaca SMS masuk, yang dibaca adalah semua SMS, bukan satu-per-satu, jadi perlu di parsing. Wah kayaknya ini dia penyebabnya. Kerjaan lagi buatku .... he he he ... :(
Akhirnya ketemu juga problemnya. Setelah di-debug, (dan menghabiskan banyak SMS -- untunnya Dillah pakai SMS gratisan dari IM3), akhirnya ketemu juga masalah yang membuat D'La Gate nge-hung ketika baca banyak SMS diterima.
Penyebabnya adalah pengisian nilai '\0' ke sebuah pointer, tanpa memeriksa isi dari pointer itu. Jadi sebelumnya ada perintah
tmp1 = strstr(tmp2, "\n"); // mencari simbol ENTER
*tmp1='\0'; //simbol yang ditemukan diganti dengan NULL
Nah, kalau SMS cuma satu, proses ini gak ada masalah, tapi waktu ngambil beberapa SMS yang belum dibaca, terjadi error karena tmp1 hasilnya NULL. Jadi harus ditambahin pengecekan apakah NULL atau nggak.
if (tmp1 != NULL) {
*tmp1='\0';
}
Hmm ... belajar satu hal lagi. Siiip!
Comments