Hi

I just ran into a weird bug where I could see that the service was being correctly instantiated, but then as a traced it back up the call tree, the reference was suddenly empty!
(https://bugs.freedesktop.org/show_bug.cgi?id=60804)

That was because of the generated UNO code for the service constructor in FilePicker.hpp:
(note that I've simplified it a little)

static Reference< XFilePicker3 > createDefault(Reference< XComponentContext > const & the_context) {
  assert(the_context.is());
  Reference< XFilePicker3 > the_instance;
  try {
    the_instance = Reference< XFilePicker3  >(
the_context->getServiceManager()->createInstanceWithArgumentsAndContext(
                       "com.sun.star.ui.dialogs.FilePicker" ,
                       Sequence<Any>(),
                       the_context),
                    UNO_QUERY);
   } catch (RuntimeException &) {
     throw;
   } catch (Exception & the_exception) {
throw DeploymentException( "component context fails to supply service FilePicker of type XFilePicker3: "
                     + the_exception.Message, the_context);
   }
   if (!the_instance.is()) {
throw DeploymentException( "component context fails to supply service FilePicker of type XFilePicker3" ), the_context);
   }
   return the_instance;
}


Perhaps we should be making it use the constructor form Reference<X>(.., UNO_QUERY_THROW) ?

Or perhaps we can change the error message in the last block to:
throw DeploymentException( "component context supplied a service FilePicker, but the service does not implement interface XFilePicker3" ), the_context);

Which would be less confusing to my rather tired brain.

Thanks, Noel Grandin


Disclaimer: http://www.peralex.com/disclaimer.html


_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to