Closed Bug 1204403 Opened 9 years ago Closed 9 years ago

Fix -Wshadow warnings in xpcom

Categories

(Core :: XPCOM, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla43
Tracking Status
firefox43 --- fixed

People

(Reporter: cpeterson, Assigned: cpeterson)

References

Details

Attachments

(2 files)

Part 1: Fix -Wshadow warnings in xpcom/io. These two warnings were real (but minor) bugs. When one variable's name shadowed another's, I renamed both variables to ensure that I did not miss a renaming and leave a name referencing the wrong variable. xpcom/io/nsMultiplexInputStream.cpp:102:16 [-Wshadow] declaration shadows a local variable xpcom/io/nsMultiplexInputStream.cpp:120:14 [-Wshadow] declaration shadows a local variable
Attachment #8660540 - Flags: review?(continuation)
Part 2: Fix -Wshadow warnings that do not appear to be actual bugs. xpcom/base/nsStatusReporterManager.cpp:177:3 [-Wshadow] declaration shadows a local variable xpcom/base/nsStatusReporterManager.cpp:178:3 [-Wshadow] declaration shadows a local variable xpcom/base/nsStatusReporterManager.cpp:209:7 [-Wshadow] declaration shadows a local variable xpcom/base/nsStatusReporterManager.cpp:217:3 [-Wshadow] declaration shadows a local variable xpcom/ds/nsVariant.cpp:1019:29 [-Wshadow] declaration shadows a local variable xpcom/glue/GenericModule.cpp:74:19 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:611:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:645:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:667:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:698:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:732:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:755:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:790:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:820:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:844:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:886:27 [-Wshadow] declaration shadows a local variable xpcom/glue/tests/gtest/TestThreadUtils.cpp:916:27 [-Wshadow] declaration shadows a local variable xpcom/io/nsEscape.cpp:514:16 [-Wshadow] declaration shadows a local variable xpcom/io/nsLocalFileCommon.cpp:141:14 [-Wshadow] declaration shadows a local variable xpcom/io/nsMultiplexInputStream.cpp:102:16 [-Wshadow] declaration shadows a local variable xpcom/io/nsMultiplexInputStream.cpp:120:14 [-Wshadow] declaration shadows a local variable xpcom/tests/TestHashtables.cpp:643:19 [-Wshadow] declaration shadows a local variable xpcom/tests/TestRacingServiceManager.cpp:273:31 [-Wshadow] declaration shadows a local variable xpcom/tests/TestRacingServiceManager.cpp:295:31 [-Wshadow] declaration shadows a local variable xpcom/tests/nsIFileEnumerator.cpp:28:27 [-Wshadow] declaration shadows a local variable nsTArray-inl.h:270:11: warning: declaration shadows a variable in namespace '(anonymous)' [-Wshadow]
Attachment #8660541 - Flags: review?(continuation)
Would you like me to review these patches, Nathan? (I'm not particularly attached to it, but I don't have anything in my review queue right now.)
Flags: needinfo?(nfroyd)
(In reply to Andrew McCreight [:mccr8] from comment #2) > Would you like me to review these patches, Nathan? (I'm not particularly > attached to it, but I don't have anything in my review queue right now.) That'd be great, thank you!
Flags: needinfo?(nfroyd)
Comment on attachment 8660540 [details] [diff] [review] part-1-Wshadow_nsMultiplexInputStream.patch Review of attachment 8660540 [details] [diff] [review]: ----------------------------------------------------------------- ::: xpcom/io/nsMultiplexInputStream.cpp @@ +90,5 @@ > > static nsresult > AvailableMaybeSeek(nsIInputStream* aStream, uint64_t* aResult) > { > + nsresult rvAvailable = aStream->Available(aResult); Please leave |rvAvailable| as |rv| to match standard practice. @@ +110,5 @@ > > static nsresult > TellMaybeSeek(nsISeekableStream* aSeekable, int64_t* aResult) > { > + nsresult rvTell = aSeekable->Tell(aResult); Ditto for |rvTell|.
Attachment #8660540 - Flags: review?(continuation) → review+
Comment on attachment 8660541 [details] [diff] [review] part-2-Wshadow_xpcom.patch Review of attachment 8660541 [details] [diff] [review]: ----------------------------------------------------------------- ::: xpcom/base/moz.build @@ +153,5 @@ > if CONFIG['MOZ_WIDGET_GTK']: > CXXFLAGS += CONFIG['TK_CFLAGS'] > + > +if CONFIG['GNU_CXX']: > + CXXFLAGS += ['-Wshadow'] This is GCC only? Do we not have shadow for clang? ::: xpcom/base/nsStatusReporterManager.cpp @@ +77,5 @@ > #define DUMP(o, s) \ > do { \ > const char* s2 = (s); \ > uint32_t dummy; \ > + nsresult rvWrite = (o)->Write((s2), strlen(s2), &dummy); \ |rvDump| seems like it would cause less collisions with other code than |rvWrite|. ::: xpcom/glue/nsCRTGlue.cpp @@ +282,5 @@ > > void > NS_MakeRandomString(char* aBuf, int32_t aBufLen) > { > +#define TABLE_SIZE 36 Maybe use MOZ_ARRAY_LENGTH(table) instead of TABLE_SIZE or I can file a followup for that.
Attachment #8660541 - Flags: review?(continuation) → review+
(In reply to Andrew McCreight [:mccr8] from comment #5) > Comment on attachment 8660541 [details] [diff] [review] > part-2-Wshadow_xpcom.patch > > Review of attachment 8660541 [details] [diff] [review]: > ----------------------------------------------------------------- > > ::: xpcom/base/moz.build > @@ +153,5 @@ > > if CONFIG['MOZ_WIDGET_GTK']: > > CXXFLAGS += CONFIG['TK_CFLAGS'] > > + > > +if CONFIG['GNU_CXX']: > > + CXXFLAGS += ['-Wshadow'] > > This is GCC only? Do we not have shadow for clang? With this patch, xpcom/base has no -Wshadow warnings with GCC or clang. CONFIG['GNU_CXX'] includes both GCC and clang so -Wshadow will be enabled for both compilers.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla43
I had 45 minutes of head-scratching in bug 1203427 caused by a shadowed local variable. It was in xpcom/ and so this bug should have identified it immediately... but it was in Mac-only code and therefore didn't get caught by the new GCC-only -Wshadow checking. Is there any chance that -Wshadow can be turned on for clang as well?
Flags: needinfo?(cpeterson)
(In reply to Nicholas Nethercote [:njn] from comment #9) > Is there any chance that -Wshadow can be turned on for clang as well? That is odd. AFAIU, the CONFIG['GNU_CXX'] in moz.build should include both gcc and clang (because clang pretends to be gcc). CONFIG['CLANG_CXX'] should only be needed to differentiate between clang and gcc. In which particular file/function was the shadowed local variable? I will double-check my assumptions about CONFIG['GNU_CXX'].
Flags: needinfo?(cpeterson)
> In which particular file/function was the shadowed local variable? Oh, it was in xpcom/threads/nsTimerImpl.cpp, and I see now that xpcom/threads/moz.build doesn't have the -Wshadow addition. My mistake, sorry for the noise.
(In reply to Nicholas Nethercote [:njn] from comment #11) > Oh, it was in xpcom/threads/nsTimerImpl.cpp, and I see now that > xpcom/threads/moz.build doesn't have the -Wshadow addition. Thanks. I will double-check why I didn't add -Wshadow in that directory.
> Thanks. I will double-check why I didn't add -Wshadow in that directory. I just tried it on Linux and there were no errors. (And then I deliberately added a shadowed variable just to double-check and I *did* get an error as expected.)
Depends on: 1207031
Blocks: 1272513
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: