Why does the component gallery give an error "Error building key for index"?

We received a bug report:

STEPS TO REPRODUCE:

1) At the command window, issue the following:

Choose Tools->Gallery from the main menu

2) If the Visual FoxPro Catalog isn't open, then open it. Click on that

node in the left pane.

3) Using the combo box in the upper left, change the selected value from

"Default" to "Class By Type"

OBSERVED BEHAVIOR:

Error dialog:

---------------------------

Component Gallery

---------------------------

Error building key for index "c:\temp\00004utl00bf.cdx" tag "Type".

Browser: classbrowser1

Object: classbrowser1

Error: 2199

Method: brwwriteproperties

______________________________

Press OK to ignore error and continue.

Press Cancel to close Component Gallery.

---------------------------

OK Cancel

---------------------------

EXPECTED BEHAVIOR:

Not this.

What’s happening?

The component gallery creates an index, but that index has a variable length index expression:

You can see the error line by unzipping Tools\Xsource\Xsource.zip.

See line 4446 in VFPSource\Browser\Browser.prg

INDEX ON UPPER(Type)+IIF(EMPTY(Parent)," ",UPPER(PADR(Text,50))) TAG Type

The expression has a conditional: with a length of either 1 or 50.

The fix is to make the index key length constant:

INDEX ON UPPER(Type+PADR(IIF(EMPTY(Parent),"",Text),50)) TAG Type

Moral: beware of index key expressions of variable length!