Using (int type, int number) like in llGetInventoryName() forces an duplicate search.

It means that the script will make twice the same research if you need to get other information (the name, for instance). And they are chance most will need more than the desc alone.

This lookup should be made only once (with llGetInventoryName) to get the object(s) of a certain type, and even in some case, doesn't need to be done at all (when you know the name of the object).

After that, you should use the name or the key you get from name for other queries, like in
llGetInventoryKey(string name)
llGetInventoryPermMask(string item, int mask)
llGetInventoryCreator(string item)
llGetInventoryType(string name)

I am testing now another patch following this model. I will update here.

Code is smaller, it avoids a second similar search inside the function, and simplifies the code in the script. I think this is the way the function should be implemented, following equivalent llGetInventory* functions design.

On a side note, would it make sense to have something like osGetInventoryItemDetails() analagous to llGetObjectDetails()? Not that I object to individual functions since pulling apart return values from a list is messy, but it might make for a more extensible function. I don't know for sure - I haven't done a lot of LSL scripting.