[Kde-bindings] KSharedConfig multiple matches

Stefano Crocco stefano.crocco at alice.it
Mon Feb 1 16:47:11 UTC 2010


On Monday 01 February 2010, Stefano Crocco wrote:
> |On Monday 01 February 2010, Richard Dale wrote:
> |> |Thanks for the patch - i'm sorry I've taken so long to have a look at
> |> |this. In  fact I was about to fix it, when I discovered there was
> |> |already a 'isConstMethod()' that I was about to add. It seems Arno had
> |> |already applied your patch.
> |> |
> |> |I was going to give a const method a score of 1, rather than have this
> |> |special  case test at the end of the matching:
> |> |
> |> |if !isConstMethod(id) and isConstMethod(chosen)
> |> |
> |> |    chosen = id
> |> |
> |> |elsif isConstMethod(id) == isConstMethod(chosen)
> |> |puts "multiple methods matching, this is an error" if debug_level
> |> |
> |> |>=DebugLevel::Minimal
> |> |>
> |> |   chosen = nil
> |> |
> |> |end
> |> |
> |> |But if it works I think we should leave it as per your patch.
> |> |
> |> |The overloading on const/non-const arguments issue is something I don't
> |> |even  know was a problem, but I think your solution of giving a score
> |> |of 1 for const args is correct.
> |
> |As far as I can tell, it works. Unfortunately, I only met this issue for
> |KDE::SharedConfig.group and KDE::ConfigGroup.new, so I don't know whether
> |it would fail in other cases.
> |
> |Stefano

I spoke too soon. I just found out a stupid error in that patch. The problem 
is that in the elsif branch, it assumes that chosen is not nil. However, it 
can happen that chosen is nil. I just found out by chance that this happens 
for Qt::Locale#to_string when passed a float argument. It seems that replacing 
line 2714 of qtruby4.rb with

elsif chosen and current_match == best_match

solves the issue.

Stefano



More information about the Kde-bindings mailing list