Closed
Bug 126473
Opened 23 years ago
Closed 23 years ago
Occurances of uninitialized variables being used before being set (in extensions/xmlextras).
Categories
(Core :: XML, defect, P4)
Tracking
()
VERIFIED
FIXED
mozilla1.0
People
(Reporter: mozilla-bugs, Assigned: hjtoi-bugzilla)
References
Details
Attachments
(1 file, 2 obsolete files)
(deleted),
patch
|
peterv
:
review+
jst
:
superreview+
asa
:
approval+
|
Details | Diff | Splinter Review |
This bug is just for the warnings in various source files in
extensions/xmlextras/base/src. Currently
(http://tinderbox.mozilla.org/SeaMonkey/warn1014136200.29882.html - Tue, 19 Feb
2002 11:30 EST) TBox shows the following warnings:
extensions/xmlextras/base/src/nsDOMParser.cpp:368
`class nsISupports * foundInterface' might be used uninitialized in this function
extensions/xmlextras/base/src/nsDOMSerializer.cpp:66
`class nsISupports * foundInterface' might be used uninitialized in this function
extensions/xmlextras/base/src/nsXMLHttpRequest.cpp:156
`class nsISupports * foundInterface' might be used uninitialized in this function
Reporter | ||
Comment 1•23 years ago
|
||
Bug 59652 is the meta-bug tracking the fight against these (potentially very
nasty) warnings.
P.S. Trying to make sure that 1.0 has as little warnings as possible.
Blocks: 59652
Keywords: mozilla1.0
Updated•23 years ago
|
Priority: -- → P4
Assignee | ||
Comment 2•23 years ago
|
||
I think the compiler is mistaken. The macro use:
NS_INTERFACE_MAP_BEGIN(nsDOMSerializer)
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_ENTRY(nsIDOMSerializer)
NS_INTERFACE_MAP_ENTRY_DOM_CLASSINFO(DOMSerializer)
NS_INTERFACE_MAP_END
expands (as far as I can tell) into
NS_IMETHODIMP nsDOMSerializer::QueryInterface(REFNSIID aIID, void**
aInstancePtr)
{
NS_ASSERTION(aInstancePtr,
"QueryInterface requires a non-NULL destination!");
if ( !aInstancePtr )
return NS_ERROR_NULL_POINTER;
nsISupports* foundInterface;
if ( aIID.Equals(NS_GET_IID(nsISupports)) )
foundInterface = NS_STATIC_CAST(nsISupports*, this);
else
if ( aIID.Equals(NS_GET_IID(nsIDOMSerializer)) )
foundInterface = NS_STATIC_CAST(nsIDOMSerializer*, this);
else
if (aIID.Equals(NS_GET_IID(nsIClassInfo))) {
foundInterface =
nsContentUtils::GetClassInfoInstance(eDOMClassInfo_DOMSerializer_id);
NS_ENSURE_TRUE(foundInterface, NS_ERROR_OUT_OF_MEMORY);
*aInstancePtr = foundInterface;
return NS_OK;
} else
foundInterface = 0;
nsresult status;
if ( !foundInterface )
status = NS_NOINTERFACE;
else
{
NS_ADDREF(foundInterface);
status = NS_OK;
}
*aInstancePtr = foundInterface;
return status;
}
so foundInterface is set before use. Initializing it to 0 on declaration might
clear the warning, but that would be needless work. I don't have Linux available
to test, and the Windows build does not give that warning.
Reporter | ||
Comment 3•23 years ago
|
||
No, you got the code wrong. The actual code (as produced by doing c++ -E and
then pretty-printing by hand) is
nsresult nsDOMSerializer::QueryInterface(const nsIID& aIID, void** aInstancePtr) {
;
if ( !aInstancePtr ) return ((nsresult) 0x80004003L);
nsISupports* foundInterface;
if ( aIID.Equals(nsCOMTypeInfo<nsISupports>::GetIID()) )
foundInterface = static_cast< nsISupports* >(this);
else if ( aIID.Equals(nsCOMTypeInfo<nsIDOMSerializer>::GetIID()) )
foundInterface = static_cast< nsIDOMSerializer* >(this);
else if (aIID.Equals(nsCOMTypeInfo<nsIClassInfo>::GetIID())) {
static const nsCID kDOMSOF_CID =
{ 0x9eb760f0, 0x4380, 0x11d2, {0xb3, 0x28, 0x00, 0x80, 0x5f, 0x8a,
0x38, 0x59} };
nsCOMPtr<nsIDOMScriptObjectFactory> sof(do_GetService(kDOMSOF_CID));
if (sof) {
foundInterface = sof->GetClassInfoInstance(eDOMClassInfo_DOMSerializer_id);
if (foundInterface) {
*aInstancePtr = foundInterface; return 0;
}
}
}
else
foundInterface = 0;
nsresult status;
if ( !foundInterface )
status = ((nsresult) 0x80004002L);
else {
(foundInterface)->AddRef();
status = 0;
}
*aInstancePtr = foundInterface;
return status;
}
Note that if nsIClassInfo branch is chosen, but sof turnes out to be NULL,
foundInterface will indeed stay uninitialized...
Assignee | ||
Comment 4•23 years ago
|
||
Thanks, I don't know how I got the expanded code I did. This fix should do it.
Assignee | ||
Comment 5•23 years ago
|
||
Argh, logic error in previous patch.
Attachment #74382 -
Attachment is obsolete: true
Assignee | ||
Comment 6•23 years ago
|
||
Reviews?
Status: NEW → ASSIGNED
Whiteboard: [fixinhand]
Target Milestone: --- → mozilla1.0
Reporter | ||
Comment 7•23 years ago
|
||
Comment on attachment 74385 [details] [diff] [review]
This is the fix
This breaks compilation in layout/xul/base/src
make: Entering directory `/local/nogin/rpmBUILD/mozilla/layout/xul/base/src'
nsBoxObject.cpp
c++ -o nsBoxObject.o -c -DOSTYPE=\"Linux2.4\" -DOSARCH=\"Linux\" -DOJI
-D_IMPL_NS_HTML -I. -I./../../../base/src -I./../../../html/style/src
-I./../../../html/base/src -I./../../../html/forms/src -I./../../content/src
-I./../../../xml/content/src -I./../../../base/public
-I../../../../dist/include/xpcom -I../../../../dist/include/string
-I../../../../dist/include/dom -I../../../../dist/include/locale
-I../../../../dist/include/content -I../../../../dist/include/gfx
-I../../../../dist/include/widget -I../../../../dist/include/view
-I../../../../dist/include/docshell -I../../../../dist/include/necko
-I../../../../dist/include/editor -I../../../../dist/include/htmlparser
-I../../../../dist/include/webshell -I../../../../dist/include/pref
-I../../../../dist/include/intl -I../../../../dist/include/gfx2
-I../../../../dist/include/imglib2 -I../../../../dist/include/unicharutil
-I../../../../dist/include/webbrwsr -I../../../../dist/include/xpconnect
-I../../../../dist/include/js -I../../../../dist/include/layout
-I../../../../dist/include
-I/usr/u/nogin/rpmsrc/BUILD.nuprl3/mozilla/dist/include/nspr
-I/usr/X11R6/include -fPIC -I/usr/X11R6/include -fno-rtti
-fno-exceptions -Wall -Wconversion -Wpointer-arith -Wbad-function-cast
-Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -pedantic
-Wno-long-long -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -O
-I/usr/X11R6/include -DMOZILLA_CLIENT -include ../../../../config-defs.h
-Wp,-MD,.deps/nsBoxObject.pp nsBoxObject.cpp
nsBoxObject.cpp: In method `nsresult nsBoxObject::QueryInterface (const
nsIID &, void **)':
nsBoxObject.cpp:72: no matching function for call to
`nsCOMPtr<nsIDOMScriptObjectFactory>::nsCOMPtr (const
nsGetServiceByCID, nsresult *)'
../../../../dist/include/xpcom/nsCOMPtr.h:514: candidates are:
nsCOMPtr<T>::nsCOMPtr () [with T =
nsIDOMScriptObjectFactory]
../../../../dist/include/xpcom/nsCOMPtr.h:521:
nsCOMPtr<T>::nsCOMPtr (const nsCOMPtr<T>
&) [with T = nsIDOMScriptObjectFactory]
../../../../dist/include/xpcom/nsCOMPtr.h:530:
nsCOMPtr<T>::nsCOMPtr (T *) [with T =
nsIDOMScriptObjectFactory]
../../../../dist/include/xpcom/nsCOMPtr.h:540:
nsCOMPtr<T>::nsCOMPtr (const
already_AddRefed<T> &) [with T = nsIDOMScriptObjectFactory]
../../../../dist/include/xpcom/nsCOMPtr.h:548:
nsCOMPtr<T>::nsCOMPtr (const
nsCOMPtr_helper &) [with T = nsIDOMScriptObjectFactory]
make: *** [nsBoxObject.o] Error 1
make: Leaving directory `/local/nogin/rpmBUILD/mozilla/layout/xul/base/src'
Attachment #74385 -
Flags: needs-work+
Assignee | ||
Comment 8•23 years ago
|
||
Attachment #74385 -
Attachment is obsolete: true
Reporter | ||
Comment 9•23 years ago
|
||
Attachment attachment 74428 [details] [diff] [review] indeed fixes some of the warnings. It still leaves
one of the warnings though:
nsSchemaLoader.cpp: In method `nsresult nsSchemaLoader::ProcessFacet (nsSchema
*, nsIDOMElement *, nsIAtom *, nsISchemaFacet **)':
nsSchemaLoader.cpp:2672: warning: `PRUint16 facetType' might be used
uninitialized in this function
Assignee | ||
Comment 10•23 years ago
|
||
I filed bug 131347 on that because I don't know what the default value should be.
Comment 11•23 years ago
|
||
Comment on attachment 74428 [details] [diff] [review]
Ba-ad day! I swear this is the one
r=peterv
Attachment #74428 -
Flags: review+
Comment 12•23 years ago
|
||
Comment on attachment 74428 [details] [diff] [review]
Ba-ad day! I swear this is the one
>+ nsresult rv; \
>+ nsCOMPtr<nsIDOMScriptObjectFactory> sof(do_GetService(kDOMSOF_CID, &rv));\
Split this (and the other one too) line into two lines after the comma so that
the rhs of the macro lines up nicely.
Other than that, sr=jst
Attachment #74428 -
Flags: superreview+
Assignee | ||
Comment 13•23 years ago
|
||
Will do, I have that fixed in my tree. Sending for approval...
Comment 14•23 years ago
|
||
Comment on attachment 74428 [details] [diff] [review]
Ba-ad day! I swear this is the one
a=asa (on behalf of drivers) for checkin to the 1.0 trunk
Attachment #74428 -
Flags: approval+
Assignee | ||
Comment 15•23 years ago
|
||
Checked in.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Whiteboard: [fixinhand]
Reporter | ||
Comment 16•23 years ago
|
||
Verifying, currently
(http://tinderbox.mozilla.org/SeaMonkey/warn1016552220.1515.html - Tue, 19 Mar
2002 10:37 EST) the only "xxx might be used uninitialized" warning in xmlextras
is the nsSchemaLoader.cpp one that is covered in a separate bug 127490.
Status: RESOLVED → VERIFIED
You need to log in
before you can comment on or make changes to this bug.
Description
•