From: <fli...@go...> - 2012-10-24 13:08:53
|
Status: New Owner: ---- New issue 903 by l...@bitwisetech.com: Generic I/O input broken http://code.google.com/p/flightgear-bugs/issues/detail?id=903 *What steps will reproduce the problem?* 1.Single input field: "Tsec: 0" terminated either \n or \r\n 2.Protocol xml leaves variable separator undefined: <var_separator></var_separator> and specifies single string input field 3._in_message[0] gets overwritten with \000 by generic.cxx #357 ff *What is the expected output? What do you see instead?* props is never updated, input line is never reported *Any output in the console (black window)?* use logging level = info logging class = io *What FlightGear version are you using (when using GIT version, please mention date)?* git 24Oct2012 *What operating system and graphics card?* OP reported problem on Windows, serial port debugging done on linux, USB serial emulation suspect problem is _not_ limited to serial generic I/O but to any ascii input *Please provide any additional information below or as attachment (Avoid expiring external links, such as to imageshack/pastebin/...).* protocol file attached; input command: --generic=serial,in,10,/dev/ttyACM0,115200,fbwRespIn baud rate is immaterial for USB - ACM ref generic.cxx #357: while ((++i < chunks) && p1) { p2 = strstr(p1, var_separator.c_str()); if (p2) { *p2 = 0; p2 += var_separator.length(); } At entry, print buf: "Tsec: 0\r\000 ....... Bkpt at line#359, print buf: "\000sec: 0\r\000........ Since protocol.xml doesn't specify a var separator the strstr search is done with needle == \000, nul character and p2, search result pointer returns addx of start of haystack, resulting in first char in message getting overwritten with 0 Problem goes away if a bogus var separator is used in protocol file, e.g <var_separator>|</var_separator> Attachments: fbwRespIn.xml 282 bytes |