[Lxr-dev] [ lxr-Bugs-523647 ] misses some refernces to symbols.
Brought to you by:
ajlittoz
From: <no...@so...> - 2002-07-29 00:59:00
|
Bugs item #523647, was opened at 2002-02-28 08:37 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=390117&aid=523647&group_id=27350 Category: genxref Group: v0.9 >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: misses some refernces to symbols. Initial Comment: LXR version 0.91 I think - downloaded it from sourceforge about 2 weeks ago. There doesn't seem to be any version info in any of the files. Latest entry in CHANGELOG is '2002-02-03 11:29 mbox' No error messages. Using mysql db. Indexing plain files. The bug: I have a C file with the line ct += kill_task(ptask, sig, 0); /* ANUPBS */ When I run genxref on the project containing this file it fails to find the reference to kill_task. If you look at the 'useage' table in mysql there's no entry for that symbol in that file. If I change the line to ct += kill_task(ptask, sig, 0); and rerun genxref it seems to work just fine - genxref finds the reference to kill_task, there's an entry in useage, and an identifier search in the browser finds it. A problem with the C comment parsing perhaps? Cheers, David Houlder dav...@an... ---------------------------------------------------------------------- >Comment By: Malcolm Box (mbox) Date: 2002-07-29 09:58 Message: Logged In: YES user_id=215386 Fixed in CVS ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2002-06-01 16:08 Message: Logged In: NO This problem has annoyed me enough that I tracked it down. The problem seems to be with LXR/Lang/Generic.pm, line 168: @lines = ($frag =~ /(.*?\n)/g, $frag =~ /[^\n]*$/); specifically, the second regexp match. When LXR hits an expression that ends in /* comment */, then the $frag will not end in a newline. The fix is trivial, just put parens around the second regexp like this: @lines = ($frag =~ /(.*?\n)/g, $frag =~ /([^\n]*)$/); For curiosity's sake I ran the old and new versions against the redhat 7.3 linux kernel, and it catches an extra 99 references to jiffies. Interestingly, it looks like lines containg quoted text also were subject to this problem. I'll submit a patch for this. ---------------------------------------------------------------------- Comment By: Malcolm Box (mbox) Date: 2002-05-21 19:28 Message: Logged In: YES user_id=215386 There are definitely some problems in the referencing code - several people have reported missing references. The problem seems to lie in the LXR::SimpleParse and Generic::referencefile() code which is rather unclear and depends on some fairly dodgy regexps. If you wanted to spend some time stepping through this code and isolating the bug it would be very useful. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=390117&aid=523647&group_id=27350 |