On Mon, Jul 02, 2012 at 03:33:21PM +0200, Lionel Elie Mamane wrote: > diff --git a/connectivity/source/commontools/dbtools.cxx > b/connectivity/source/commontools/dbtools.cxx > index 755fe9e..9286efd 100644 > --- a/connectivity/source/commontools/dbtools.cxx > +++ b/connectivity/source/commontools/dbtools.cxx > @@ -1819,7 +1819,7 @@ void askForParameters(const Reference< > XSingleSelectQueryComposer >& _xComposer, > Reference<XIndexAccess> xParamsAsIndicies = xParameters.is() ? > xParameters->getParameters() : Reference<XIndexAccess>(); > sal_Int32 nParamCount = xParamsAsIndicies.is() ? > xParamsAsIndicies->getCount() : 0; > ::std::vector<bool, std::allocator<bool> > aNewParameterSet( > _aParametersSet ); > - if ( nParamCount || > ::std::count(aNewParameterSet.begin(),aNewParameterSet.end(),true) != > nParamCount ) > + if ( nParamCount && > ::std::count(aNewParameterSet.begin(),aNewParameterSet.end(),true) != > nParamCount ) > { > static const ::rtl::OUString > PROPERTY_NAME(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME)); > aNewParameterSet.resize(nParamCount ,false);
The idea of this hunk is as follows: As I understand this code, _aParametersSet / aNewParameterSet stores at position N the information whether parameter number N has already been set (and thus does not need to be queried from the user anymore). So the old code does: if (there is at least one parameter OR the number of parameters that have already been set != the total number of parameters) { prompt the user for parameter values } My new code does: if (there is at least one parameter AND the number of parameters that have already been set != the total number of parameters (i.e. there is at least one parameter that has not been not, since set parameters <= total parameters) ) { prompt the user for parameter values } So, if (as is the situation in the bug's example document) all parameters have already been given a value, do not fire up a dialog to ask the user for the values of ... no parameter, which is silly and the code handling this dialog cannot handle well; it has an OSL_ENSURE to test for this: warn:legacy.osl:13341:1:/home/master/src/libreoffice/core/dbaccess/source/ui/dlg/paramdialog.cxx:106: OParameterDialog::OParameterDialog : can't handle empty containers ! -- Lionel _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice