Doug Turner wrote:
> 
> I think I take this statement back. I found a nice workaround.  I have
> tested Sun's JRE against my changes and it seams to work fine.  (I am
> using them because they use the service manager built against xpcom
> around the time of netscape 6.0/6.1.  I could have just as easily used
> another plugin).

Renaming old interfaces can burn you if any callers rely on
linking to exported entry points whose names are mangled using
the old name; i.e. some exported function that used the interface
as the type for a param.

Try the following to see some exported examples of this...

dumpbin /exports xpcom.dll | grep nsIServiceManager

You might not want to trust your small test sample if other
callers also need to be supported.

John.

> 
> Doug Turner wrote:
> 
> > I think that the only way to create a new interface while preserving
> > backwards compatiblity is to not rename the existing class.  I just
> > banged up against the problem that nsServiceManager has two functions
> > which take nsIServiceManager interfaces.  I was planning to just rename
> > these bests to nsIServiceManagerObsolete, but of course that would break
> > everything.
> >
> > So, nsIServiceManger2 seams like the best thing to do.  After all it is
> > only a name. :-)
> >
> > comments?
> >
> > Doug Turner wrote:
> >
> >> Okay, I have started on a new nsIServiceManager.
> >>
> >> The old stuff will still work, but it will be named
> >> nsIServiceManagerObsolete.  The static class nsServiceManager will
> >> still be supported, but it will call through to the new stuff.
> >>
> >> I will attach patches later this week.
> >
> >

Reply via email to