On Fri, Nov 30, 2012 at 11:00:52AM +0100, Dieter Bloms wrote:
I changed it this way:
--snip-- 32 bool tComponent::FromString(const char *s) 33 { 34 unsigned int Stream, Type; 35 description = NULL; 36 int n = sscanf(s, "%X %02X %7s %a[^\n]", &Stream, &Type, language, &description); // 7 = MAXLANGCODE2 - 1 37 esyslog("dbloms: "%X" "%02X" "%7s" "%a"", Stream, Type, language, description); 38 39 if (n != 4 || isempty(description)) { 40 free(description); 41 description = NULL; 42 } 43 stream = Stream; 44 type = Type; 45 return n >= 3; 46 } --snip--
IMHO the %a should become %s in esyslog() whereas in sscanf() the %a should become %as for the GNU extension of dynamically allocating string conversions.
Werner