Fix Mailnews compiler warnings after they got upgraded to errors in bug 1292463 (Move MOZ_C{,XX}_SUPPORTS_WARNING to python configure)

RESOLVED FIXED in Thunderbird 51.0

Status

Thunderbird
General
--
blocker
RESOLVED FIXED
a year ago
11 months ago

People

(Reporter: Jorg K (GMT+2), Assigned: aceman)

Tracking

Trunk
Thunderbird 51.0
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(6 attachments, 15 obsolete attachments)

989 bytes, patch
Jorg K (GMT+2)
: review+
Details | Diff | Splinter Review
1.36 KB, patch
aceman
: review+
Details | Diff | Splinter Review
1.31 KB, patch
aceman
: review+
Details | Diff | Splinter Review
105.68 KB, patch
aleth
: review+
Details | Diff | Splinter Review
199.32 KB, patch
Jorg K (GMT+2)
: review+
Details | Diff | Splinter Review
22.55 KB, patch
Jorg K (GMT+2)
: review+
Details | Diff | Splinter Review
(Reporter)

Description

a year ago
Looks like warnings got upgraded to errors, so we need to fix some warnings or disable the "upgrade".

Errors can be seen here:
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=943e97688ec297a2d710728b84ae7b7fdcd33ef3

Comment 1

a year ago
The only real issue here is ldap/. Is there a convenient way to turn off some compiler flags for ldap only? Not sure if it's set up as a subconfigure.
Flags: needinfo?(Pidgeot18)
(Assignee)

Comment 2

a year ago
Created attachment 8779916 [details] [diff] [review]
check NS_NewISupportsArray

So this brings linux in line with the other platforms.

The LDAP failure still remains. I can look at that later.
Attachment #8779916 - Flags: review?(jorgk)

Updated

a year ago
Attachment #8779916 - Flags: review?(jorgk) → review+
(Reporter)

Comment 3

a year ago
Comment on attachment 8779916 [details] [diff] [review]
check NS_NewISupportsArray

Hmm, funny commit message ;-)
Bug 1294260 - check return code of NS_NewISupportsArray() - bustage fix. r=jorgk,aleth a=bustage-fix CLOSED TREE
Attachment #8779916 - Flags: review+
(Assignee)

Comment 4

a year ago
Must be too late :)
(Assignee)

Comment 5

a year ago
Strangely, after applying the patch locally and updating m-c I do not get the LDAP compile failures seen on try server. Instead, I get an internal linker error (in ld). I do not know yet if it is a manifestation of the same problem, but I doubt that.

Comment 6

a year ago
(In reply to :aceman from comment #5)
> Strangely, after applying the patch locally and updating m-c I do not get
> the LDAP compile failures seen on try server. Instead, I get an internal
> linker error (in ld). I do not know yet if it is a manifestation of the same
> problem, but I doubt that.

You probably have to set
ac_add_options --enable-warnings-as-errors
in your mozconfig as it's only turned on by default when MOZ_AUTOMATION is set.
(Assignee)

Comment 7

a year ago
I can't do that if that would apply to whole tree. There are a million of warnings in m-c and some in c-c. I can try removing -Wextra but I do not remember it being warning free even before that.
(Reporter)

Comment 8

a year ago
(In reply to :aceman from comment #7)
> I can't do that if that would apply to whole tree. There are a million of
> warnings in m-c and some in c-c. I can try removing -Wextra but I do not
> remember it being warning free even before that.
That's what I don't understand either. If anyone were to turn warnings to errors, then M-C just would not compile any more. So my questions are:
What is MOZ_AUTOMATION? How do they manage to compile M-C? (Maybe they do *not* convert warnings to errors there.) And why does C-C code get treated differently? I'm not sure, but we have more warnings than in LDAP, so we can't possibly fix all warnings now. See bug 1232306 which never went anywhere apart from fixing warnings in one particular file (ImportCharSet.cpp).

Comment 9

a year ago
(In reply to :aceman from comment #7)
> I can't do that if that would apply to whole tree. There are a million of
> warnings in m-c and some in c-c. I can try removing -Wextra but I do not
> remember it being warning free even before that.

Yes, I think I'm not understanding something about what Bug 1292463 actually did.

Comment 10

a year ago
--enable-warnings-as-errors was enabled in the m-c mozconfigs in bug 703121 and modified in bug 1198334. The description there gives some information and explains why it's restricted to automation builds (MOZ_AUTOMATION is set for the buildbot jobs, but not locally).

Comment 11

a year ago
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=4d3f2850ed21660a9523cd92f208dffdc6f44b21

Updated

a year ago
Flags: needinfo?(Pidgeot18)

Comment 12

a year ago
So to summarize, there's been a steady effort under way for years to treat warnings as errors whereever possible in automation builds. It's now the default unless ALLOW_COMPILER_WARNINGS is explicitly set for a subdirectory (generally only the case for imported libraries) or for a particular build config. You may see a ton of warnings in your local builds as your config is slightly different, but if you saw the same warning on try your build would fail.

Comment 13

a year ago
Looks like it's now failing in mailnews/ (comment 11)?
Flags: needinfo?(acelists)

Comment 14

a year ago
We are seeing these warnings-as-errors problems on c-c now because c-c mozconfigs never followed the warnings-as-errors defaults used by m-c (as described in comment 12) but now they also apply to c-c.

Comment 15

a year ago
Created attachment 8780069 [details] [diff] [review]
Part 1: Allow compiler warnings in ldap [landed in comment #74]
Attachment #8780069 - Flags: review?(acelists)
(Reporter)

Comment 16

a year ago
(In reply to aleth [:aleth] from comment #13)
> Looks like it's now failing in mailnews/ (comment 11)?
Looks like these are somewhat expected:
https://dxr.mozilla.org/comm-central/source/obj-x86_64-pc-linux-gnu/.mozbuild/warnings.json#1675
I'm not sure what this file does.

I'd say, either allow compiler warnings there too or fix them ;-)
This is caused by declaring them here:
https://dxr.mozilla.org/comm-central/source/mailnews/import/src/nsImportAddressBooks.cpp#47
Maybe try changing
NS_IMETHOD BeginImport(nsISupportsString *successLog, nsISupportsString *errorLog, bool *_retval) ;
to include the class name or move those declarations to the class in the .h file.
(Reporter)

Comment 17

a year ago
Comment on attachment 8780069 [details] [diff] [review]
Part 1: Allow compiler warnings in ldap [landed in comment #74]

Review of attachment 8780069 [details] [diff] [review]:
-----------------------------------------------------------------

Sure, if it works. I looked at the code, it's a horrible mix of unsigned and signed via their own types. Not fun to fix at all.
Attachment #8780069 - Flags: review?(acelists) → review+
(Assignee)

Comment 18

a year ago
Yes, I also agree with ignoring warnings in LDAP.

But these missing overrides should be fixed

I'll update my patch with further fixes for the new issues.
I wonder why they only crop up now, when we saw this NS_NewISupportsArray occurrence yesterday but the compiler didn't flag it.

/builds/slave/tb-try-c-cen-l64-d-00000000000/build/mailnews/base/search/src/nsMsgFilter.cpp:175:51: error: ignoring return value of 'nsresult NS_NewISupportsArray(nsISupportsArray**)', declared with attribute warn_unused_result [-Werror=unused-result]

I wonder how to fix this one:

/builds/slave/tb-try-c-cen-l64-d-00000000000/build/mailnews/local/src/nsMsgLocalStoreUtils.cpp:305:68: error: format '%lld' expects argument of type 'long long int', but argument 2 has type 'int64_t {aka long int}' [-Werror=format=]
Flags: needinfo?(acelists)
(Assignee)

Comment 19

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #16)
> I'd say, either allow compiler warnings there too or fix them ;-)
> This is caused by declaring them here:
> https://dxr.mozilla.org/comm-central/source/mailnews/import/src/
> nsImportAddressBooks.cpp#47
> Maybe try changing
> NS_IMETHOD BeginImport(nsISupportsString *successLog, nsISupportsString
> *errorLog, bool *_retval) ;
> to include the class name or move those declarations to the class in the .h
> file.

I think they override a generic function in the parent class in another file, so moving just to the child class in .h should not work.

I think this just needs to add the 'override' keyword.

https://dxr.mozilla.org/comm-central/source/mozilla/dom/html/UndoManager.cpp#103

Comment 20

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #16)
> (In reply to aleth [:aleth] from comment #13)
> > Looks like it's now failing in mailnews/ (comment 11)?
> Looks like these are somewhat expected:
> https://dxr.mozilla.org/comm-central/source/obj-x86_64-pc-linux-gnu/.
> mozbuild/warnings.json#1675
> I'm not sure what this file does.

You're looking at part of the output of a build - a json file containing the warnings encountered. That's an objdir. Not sure why dxr is indexing it.

> I'd say, either allow compiler warnings there too or fix them ;-)

It makes some sense to allow warnings in ldap as its an external library, and it might be better to replace it rather than to fix it. For mailnews/ imho it would make more sense to fix the warnings in line with m-c policy. Looking at the current failures it seems to me they are not unexpected (eg. one we were wondering yesterday on #maildev about why we weren't seeing it ;) ).

But if there are too many warnings we could temporarily allow them.

Comment 21

a year ago
Ah, looks like I midaired with aceman's comments, sorry.

Comment 22

a year ago
(In reply to :aceman from comment #18)
> I wonder how to fix this one:
> 
> /builds/slave/tb-try-c-cen-l64-d-00000000000/build/mailnews/local/src/
> nsMsgLocalStoreUtils.cpp:305:68: error: format '%lld' expects argument of
> type 'long long int', but argument 2 has type 'int64_t {aka long int}'
> [-Werror=format=]

It's in a debug-only printf: https://dxr.mozilla.org/comm-central/source/mailnews/local/src/nsMsgLocalStoreUtils.cpp?q=nsMsgLocalStoreUtils.cpp&redirect_type=direct#305

Probably fixed by removing one 'l' or an explicit cast?
(Assignee)

Comment 23

a year ago
(In reply to aleth [:aleth] from comment #20)
> It makes some sense to allow warnings in ldap as its an external library,
> and it might be better to replace it rather than to fix it.

Yes.

> For mailnews/
> imho it would make more sense to fix the warnings in line with m-c policy.
> Looking at the current failures it seems to me they are not unexpected (eg.
> one we were wondering yesterday on #maildev about why we weren't seeing it
> ;) ).

Yes :)

> But if there are too many warnings we could temporarily allow them.

Is there a possibility to disable warning classes? E.g. we can't yet fix the warning about some NS_ERROR values not being in nsresult enumeration. But some others we can fix, there even shouldn't be many, I cleaned them up once in a while.
(Assignee)

Comment 24

a year ago
(In reply to aleth [:aleth] from comment #22)
> > /builds/slave/tb-try-c-cen-l64-d-00000000000/build/mailnews/local/src/
> > nsMsgLocalStoreUtils.cpp:305:68: error: format '%lld' expects argument of
> > type 'long long int', but argument 2 has type 'int64_t {aka long int}'
> > [-Werror=format=]
> 
> Probably fixed by removing one 'l' or an explicit cast?

http://stackoverflow.com/questions/9225567/how-to-print-a-int64-t-type-in-c
Now I wonder which solution is more ugly :)

printf("%" PRId64 "\n", my_int);
printf("%lld", (long long)my_int);

Comment 25

a year ago
(In reply to :aceman from comment #23)
> > But if there are too many warnings we could temporarily allow them.
> 
> Is there a possibility to disable warning classes? E.g. we can't yet fix the
> warning about some NS_ERROR values not being in nsresult enumeration. But
> some others we can fix, there even shouldn't be many, I cleaned them up once
> in a while.

In principle you can do that in configure, *if* there is a way to override mozilla/build/moz.configure/warnings.configure for TB builds. But not per directory.

What's the problem with that enumeration error? Is that a known bug?
(Assignee)

Comment 26

a year ago
(In reply to aleth [:aleth] from comment #25)
> What's the problem with that enumeration error? Is that a known bug?

Yes, see bug 783526 comment 15.

Comment 27

a year ago
(In reply to :aceman from comment #26)
> (In reply to aleth [:aleth] from comment #25)
> > What's the problem with that enumeration error? Is that a known bug?
> 
> Yes, see bug 783526 comment 15.

Looks like years-old technical debt coming back to bite ;)
(Reporter)

Comment 28

a year ago
(In reply to :aceman from comment #19)
> I think this just needs to add the 'override' keyword.
I'm aware of 'override' but I'm not sure it's the right thing to do. Where would the parent class be?
Take FindAddressBooks, that's just a method from nsIImportAddressBooks that needs to be implemented, not overridden.
For example, Becky just has:
NS_IMETHODIMP
nsBeckyAddressBooks::FindAddressBooks(nsIFile *aLocation,
                                      nsIArray **_retval)

Many others have two:
mailnews/import/vcard/src/nsVCardImport.cpp
NS_IMETHOD FindAddressBooks(nsIFile *location, nsIArray **_retval); <=== Why?
NS_IMETHODIMP ImportVCardAddressImpl::FindAddressBooks(

See:
https://dxr.mozilla.org/comm-central/search?q=FindAddressBooks&redirect=false

I'm not sure what the first one does.
(Assignee)

Comment 29

a year ago
The message is like this:

mailnews/import/src/nsImportAddressBooks.cpp:47:14: error: 'GetData' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
  NS_IMETHOD GetData(const char *dataId, nsISupports **_retval);
             ^
objdir-tb/dist/include/nsIImportGeneric.h:33:14: note: overridden virtual function is here
  NS_IMETHOD GetData(const char * dataId, nsISupports * *_retval) = 0;
             ^
So it says what overrides what. I've seen this construct in more places in mailnews. There is some generic class (e.g. a msgserver) and then the specific server types override the functions in that generic class.
(Reporter)

Comment 30

a year ago
Hmm, yes, I can see nsIImportGeneric.idl. But I was looking at this Mac compile error:
mailnews/import/vcard/src/nsVCardImport.cpp:56:14: error: 'FindAddressBooks' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
Maybe OE, Outlook, VCard, Text and Becky all override the generic one in nsIImportAddressBooks.idl. In this case 'override' is the thing to add. So when will it be ready ;-)
(Reporter)

Updated

a year ago
Duplicate of this bug: 1294369
(Assignee)

Comment 32

a year ago
Ok, I have progressed much with the patches, results can be seen on try.

I need to take a break now, the next open issues are:
-Windows:
build/objdir-tb/mozilla-config.h(145): error C2220: warning treated as error - no 'object' file generated
build/objdir-tb/mozilla-config.h(145): warning C4005: '_WIN32_WINNT': macro redefinition
build/objdir-tb/mozilla-config.h(145): note: command-line arguments:  see previous definition of '_WIN32_WINNT'

-Linux:
In file included from db/mork/src/morkArray.cpp:17:0:
db/mork/src/morkNode.h:223:21: error: ‘virtual mork_uses morkNode::AddStrongRef(morkEnv*)’ was hidden [-Werror=overloaded-virtual]
   virtual mork_uses    AddStrongRef(morkEnv* ev);
                     ^
In file included from db/mork/src/morkEnv.h:14:0,
                 from db/mork/src/morkArray.cpp:21:
db/mork/src/morkObject.h:92:21: error:   by ‘virtual mork_uses morkObject::AddStrongRef(nsIMdbEnv*)’ [-Werror=overloaded-virtual]
   NS_IMETHOD_(mork_uses) AddStrongRef(nsIMdbEnv* ev);
                     ^
-Linux & OS X:
mailnews/base/search/src/nsMsgLocalSearch.cpp:279:9: error: case value '2153054213' not in enumerated type 'nsresult' [-Werror=switch]
(Thanks to Jorg I replaced this with ifs for now so we could look beyond this spot, but other similar places exist)
(Reporter)

Comment 33

a year ago
Just on the last item:
nsresult is an enum owned by M-C:
https://dxr.mozilla.org/comm-central/rev/6cf0089510fad8deb866136f5b92bbced9498447/mozilla/xpcom/base/nsError.h#122

I've seen something about "extending" enums, but no idea how relevant that is:
https://reviews.llvm.org/D2334 (bottom of the page).

Or from bug 1081010:
https://bugzilla.mozilla.org/page.cgi?id=splinter.html&bug=1081010&attachment=8503016
switch (static_cast<int>(variable)) {

For nsresult we should try:
switch (static_cast<uint32_t>err)) {

Comment 34

a year ago
(In reply to :aceman from comment #32)
> -Linux:
> In file included from db/mork/src/morkArray.cpp:17:0:
> db/mork/src/morkNode.h:223:21: error: ‘virtual mork_uses
> morkNode::AddStrongRef(morkEnv*)’ was hidden [-Werror=overloaded-virtual]
>    virtual mork_uses    AddStrongRef(morkEnv* ev);
>                      ^
> In file included from db/mork/src/morkEnv.h:14:0,
>                  from db/mork/src/morkArray.cpp:21:
> db/mork/src/morkObject.h:92:21: error:   by ‘virtual mork_uses
> morkObject::AddStrongRef(nsIMdbEnv*)’ [-Werror=overloaded-virtual]
>    NS_IMETHOD_(mork_uses) AddStrongRef(nsIMdbEnv* ev);

Two options for this:
https://dxr.mozilla.org/comm-central/source/mozilla/dom/base/DOMException.h#10
https://dxr.mozilla.org/comm-central/source/mozilla/dom/mobilemessage/MobileMessageCursorCallback.h#39
(Assignee)

Comment 35

a year ago
Should we rename this bug already so that people can find it? We probably do not port much from the m-c bug, we actually fix the fallout.
Severity: normal → major
OS: Unspecified → All
Hardware: Unspecified → All
Version: unspecified → Trunk
(Reporter)

Updated

a year ago
Summary: Port |Bug 1292463 - Move MOZ_C{,XX}_SUPPORTS_WARNING to python configure| to TB → Fix Mailnews compiler warnings after they got upgraded to errors in bug 1292463 (Move MOZ_C{,XX}_SUPPORTS_WARNING to python configure)
(Reporter)

Comment 36

a year ago
Created attachment 8780398 [details] [diff] [review]
WIP - real issues.

Attaching Aceman's latest WIP from try.
(Reporter)

Comment 37

a year ago
Created attachment 8780400 [details] [diff] [review]
WIP - syntactic issues.

Attaching Aceman's latest WIP from try.

I'll see what's happening on Windows based on those two patches and will submit my modifications separately.

Let me know if that's a bad idea due to double/wasted work.
Attachment #8779916 - Attachment is obsolete: true
(Assignee)

Comment 38

a year ago
No problem, thanks. I will not work on it for the next 10 hours :)
(Reporter)

Comment 39

a year ago
OK, I will see what I can done in the next few hours and add another additional patch. I'm afraid that the Windows compiler is a lot less fussy, so what compiles on Windows won't necessarily compile elsewhere. I don't think it complains about the "fallthrough". At least I might find a few more overrides. Oops, compilation just failed in Mork.
(Reporter)

Comment 40

a year ago
I need to do this:
  // The first declaration of AddStrongRef is to suppress -Werror,-Woverloaded-virtual.
#ifndef XP_WIN
  NS_IMETHOD_(mork_uses) AddStrongRef(morkEnv* ev) override;
#endif

Nice, huh? OK, I won't comment on every bit, I'll just hand over in the afternoon.
(Assignee)

Comment 41

a year ago
It could be better to check for the MS C compiler, not for Windows.
That mork changes were needed locally for me (it think I am almost done on linux). They are not (yet?) visible on try on any platform (not even linux on try as I have the m-c patch that skips the enumeration errors locally).
(Reporter)

Comment 42

a year ago
My compile went through, but I have a link error:
public: virtual __thiscall nsIMdbHeap::~nsIMdbHeap(void)".
I'll fix that.

Have you tried:
switch (static_cast<uint32_t>(err)) {
from comment #33?
(Assignee)

Comment 43

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #42)
> My compile went through, but I have a link error:
> public: virtual __thiscall nsIMdbHeap::~nsIMdbHeap(void)".
> I'll fix that.

Yeah, I added that but didn't get to the link phase so I haven't yet hit that.
This was supposed to fix an error about "deleting an object of abstract class with non-virtual destructor may have unexpected results" (or similar).

> Have you tried:
> switch (static_cast<uint32_t>(err)) {
> from comment #33?

Not yet.
(Reporter)

Comment 44

a year ago
Created attachment 8780424 [details] [diff] [review]
4th patch to make it compile, link, run and even work on Windows.

Only some tweaks to Mork.

Try:
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=cbd63ada86e8
(Reporter)

Comment 45

a year ago
Or did I miss something and I need to set
ac_add_options --enable-warnings-as-errors
(since this is only set in automation)?
(Assignee)

Comment 46

a year ago
Yes, you need to set that option if you want to find all the errors locally (without manually reading all the compiler output for warnings). Without it, local build may pass even without any patch (the same warnings will not abort it).

Seems like there is still the mozilla-config.h problem I mentioned yesterday on IRC.
(Reporter)

Comment 47

a year ago
(In reply to :aceman from comment #46)
> Yes, you need to set that option if you want to find all the errors locally
That's not so useful. If at all, it should stop on a local build.

> Seems like there is still the mozilla-config.h problem I mentioned yesterday
> on IRC.
Hmm, yes.
mozilla-config.h(145): error C2220: warning treated as error - no 'object' file generated
That line says:
#define _WINDOWS 1
Perhaps that's somehow redefined?

Error C2220 is: https://msdn.microsoft.com/en-us/library/ksk5k0ta.aspx
(Reporter)

Comment 48

a year ago
Hmm, I added ac_add_options --enable-warnings-as-errors to .mozconfig.
I touched all .h, .c and .cpp files in
calendar, chat, db, editor, im, ldap, mail, mailnews, testing.
The I ran mozilla/mach build
Result: Lots of warnings coming out of LDAP, no other warning. After a few minutes everything is compiled.
What am I doing wrong?

Oh, apparently nothing. Reading through:
https://archive.mozilla.org/pub/thunderbird/try-builds/mozilla@jorgk.com-cbd63ada86e807aaf85391b563259b7e611ed819/try-comm-central-win32/try-comm-central-win32-bm76-try1-build2.txt.gz
here is the problem:
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/objdir-tb/mozilla-config.h(145): error C2220: warning treated as error - no 'object' file generated
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/objdir-tb/mozilla-config.h(145): warning C4005: '_WIN32_WINNT': macro redefinition
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/objdir-tb/mozilla-config.h(145): note: command-line arguments:  see previous definition of '_WIN32_WINNT'
(Assignee)

Comment 49

a year ago
Comment on attachment 8780424 [details] [diff] [review]
4th patch to make it compile, link, run and even work on Windows.

Review of attachment 8780424 [details] [diff] [review]:
-----------------------------------------------------------------

::: db/mork/src/morkCursor.h
@@ +49,5 @@
>      mdb_count* outCount);
>  
>    NS_IMETHOD AddWeakRef(nsIMdbEnv* ev);
>    // The first declaration of AddStrongRef is to suppress -Werror,-Woverloaded-virtual.
> +#ifndef XP_WIN

As I asked, would ifndef _MSC_VER work for these cases?
(Reporter)

Comment 50

a year ago
No idea. But where does the |previous definition of '_WIN32_WINNT'| come from? There is no problem locally.

Comment 51

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #50)
> No idea. But where does the |previous definition of '_WIN32_WINNT'| come
> from? There is no problem locally.

I don't know anything about this macro, but maybe here?
https://dxr.mozilla.org/comm-central/source/mailnews/mapi/mapihook/build/moz.build#15
(Assignee)

Comment 52

a year ago
And it is also defined in the Makefile in that directory.
This needs to look into the specific mozilla-config.h file generated on that Windows system. On Linux, this macro is not there. But Jorg said the mentioned line 145 in the file contains some other macro...
(Reporter)

Comment 53

a year ago
I saw that too, OK, let's try it.
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=471014faab63

Same patch as before plus:
diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/build/moz.build
--- a/mailnews/mapi/mapihook/build/moz.build
+++ b/mailnews/mapi/mapihook/build/moz.build

-DEFINES['_WIN32_WINNT'] = '0x400'
+if not CONFIG['_WIN32_WINNT']:
+    DEFINES['_WIN32_WINNT'] = '0x400'
(Reporter)

Comment 54

a year ago
(In reply to :aceman from comment #52)
> And it is also defined in the Makefile in that directory.
I don't see that.

> This needs to look into the specific mozilla-config.h file generated on that
> Windows system. On Linux, this macro is not there. But Jorg said the
> mentioned line 145 in the file contains some other macro...
Looks like and off-by-one:
144: #define _WIN32_WINNT 0x502
145: #define _WINDOWS 1

See comment #48 to see that the problem appears to be _WIN32_WINNT and not _WINDOWS.

Comment 55

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #53)
> -DEFINES['_WIN32_WINNT'] = '0x400'
> +if not CONFIG['_WIN32_WINNT']:
> +    DEFINES['_WIN32_WINNT'] = '0x400'

What's the meaning of the value here? It seems to be set to different values in different places.
(Reporter)

Comment 56

a year ago
Please ask something I can answer :-(

Comment 57

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #56)
> Please ask something I can answer :-(

Maybe someone on #build knows? Or check hg blame for who added that define?
I ask because your change means that if _WIN32_WINNT was already defined, it may end up with a different value than 0x400.
(Assignee)

Comment 58

a year ago
I read somewhere that it indicates the lowest Windows version the code requires. So we probably want it to be 0x400 in this folder. Better would be to unset the existing value and set to 0x400, not preserve its value.
(Reporter)

Comment 59

a year ago
In fact, it looks like a Windows version:
4 = Win 95
502 = +/-XP
6 = Vista
See for example:
https://dxr.mozilla.org/comm-central/source/mozilla/python/psutil/psutil/_psutil_windows.c#690
(Reporter)

Comment 60

a year ago
If the overall program requires XP, it doesn't make much sense to require Win95 to compile the MAPI/Outlook stuff, does it? Anyway, see that the try says.

Comment 61

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #60)
> If the overall program requires XP, it doesn't make much sense to require
> Win95 to compile the MAPI/Outlook stuff, does it? Anyway, see that the try
> says.

It's probably set to 4 as it's old code, and as other parts of the codebase set it to 6 probably the only thing that matters is that 4 < 6...
(Reporter)

Comment 62

a year ago
OK,
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=471014faab63
didn't work (see comment #53)
and removing it altogether in
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=25c19f435c71
didn't work either:

c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/mapiDLL/MapiDll.cpp(251): error C2220: warning treated as error - no 'object' file generated
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/mapiDLL/MapiDll.cpp(251): warning C4996: 'MAPILogoff': was declared deprecated
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/mapiDLL/MapiDll.cpp(159): note: see declaration of 'MAPILogoff'
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/mapiDLL/MapiDll.cpp(275): warning C4996: 'MAPILogoff': was declared deprecated
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/mapiDLL/MapiDll.cpp(159): note: see declaration of 'MAPILogoff'
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mozilla/config/rules.mk:950: recipe for target 'MapiDll.obj' failed
mozmake.exe[5]: *** [MapiDll.obj] Error 2

Most likely Aceman was right (comment #58) that it needs to be set to 0x400 and then reset. No idea how to achieve this.

Comment 63

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #62)
> c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/
> mapiDLL/MapiDll.cpp(251): error C2220: warning treated as error - no
> 'object' file generated
> c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/
> mapiDLL/MapiDll.cpp(251): warning C4996: 'MAPILogoff': was declared
> deprecated
> c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/
> mapiDLL/MapiDll.cpp(159): note: see declaration of 'MAPILogoff'
> c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/
> mapiDLL/MapiDll.cpp(275): warning C4996: 'MAPILogoff': was declared
> deprecated
> c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mailnews/mapi/
> mapiDLL/MapiDll.cpp(159): note: see declaration of 'MAPILogoff'
> c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/mozilla/config/
> rules.mk:950: recipe for target 'MapiDll.obj' failed
> mozmake.exe[5]: *** [MapiDll.obj] Error 2

That's a different warning in a different folder, so maybe it worked after all?

> Most likely Aceman was right (comment #58) that it needs to be set to 0x400
> and then reset. No idea how to achieve this.

It's interesting that that seems the only place in c-c or m-c where _WIN32_WINNT is defined in a moz.build. Maybe it could be done the same way as it is done elsewhere.
(Reporter)

Comment 64

a year ago
(In reply to aleth [:aleth] from comment #63)
> That's a different warning in a different folder, so maybe it worked after
> all?
What worked after all? Sure, the double definition is gone, but now something else doesn't compile that needs the lower version. :-(

Comment 65

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #64)
> (In reply to aleth [:aleth] from comment #63)
> > That's a different warning in a different folder, so maybe it worked after
> > all?
> What worked after all? Sure, the double definition is gone, but now
> something else doesn't compile that needs the lower version. :-(

I did put a question mark there.

My point is: does a DEFINES in mailnews/mapi/mapihook/build affect mailnews/mapi/mapiDLL at all ?
(Reporter)

Comment 66

a year ago
(In reply to aleth [:aleth] from comment #65)
> My point is: does a DEFINES in mailnews/mapi/mapihook/build affect
> mailnews/mapi/mapiDLL at all ?
I'd say so. The latter is most likely compiled later. But just ignore me, I really have no idea.
(Reporter)

Comment 67

a year ago
Maybe take the _WIN32_WINNT out of mailnews/mapi/mapihook/build/moz.build and put
#define _WIN32_WINNT 0x0400
into MapiDll.cpp with some trickery to preserve and restore the previous value:

#ifdef _WIN32_WINNT
#define save_WIN32_WINNT _WIN32_WINNT
#endif
#define _WIN32_WINNT 0x0400
and at the end
#undef _WIN32_WINNT
#ifdef save_WIN32_WINNT
#define _WIN32_WINNT save_WIN32_WINNT
#endif
... or words to that effect.

Comment 68

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #66)
> (In reply to aleth [:aleth] from comment #65)
> > My point is: does a DEFINES in mailnews/mapi/mapihook/build affect
> > mailnews/mapi/mapiDLL at all ?
> I'd say so. The latter is most likely compiled later. But just ignore me, I
> really have no idea.

Afaik you should see the effect (or not) of a moz.build DEFINES by looking at the -D... parameters in the compiler command line in the log.
(Reporter)

Comment 69

a year ago
Well, did it a little differently since the above was nonsense ;-)
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=1d6caf195e61
(Assignee)

Comment 70

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #42)
> My compile went through, but I have a link error:
> public: virtual __thiscall nsIMdbHeap::~nsIMdbHeap(void)".
> I'll fix that.

I also have link failures from the mork changes. I look at them.

> Have you tried:
> switch (static_cast<uint32_t>(err)) {
> from comment #33?

This does not work:
mailnews/compose/src/nsMsgSendReport.cpp: In member function ‘virtual nsresult nsMsgSendReport::DisplayReport(nsIPrompt*, bool, bool, nsresult*)’:
mailnews/compose/src/nsMsgSendReport.cpp:279:12: error: could not convert ‘NS_BINDING_ABORTED’ from ‘const nsresult’ to ‘unsigned int’
       case NS_BINDING_ABORTED:
            ^
mailnews/compose/src/nsMsgSendReport.cpp:280:98: error: could not convert ‘(nsresult)2153066728u’ from ‘nsresult’ to ‘unsigned int’
(Reporter)

Comment 71

a year ago
Created attachment 8780707 [details] [diff] [review]
4th patch for Windows (MAPI fixed and ical perhaps fixed).

Latest try fixed the MAPI problems:
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=af8a4880f2ee

The next problem popped up in ical:
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/calendar/libical/src/libical/icalerror.c(120): error C2220: warning treated as error - no 'object' file generated
c:/builds/moz2_slave/tb-try-c-cen-w32-0000000000000/build/calendar/libical/src/libical/icalerror.c(120): warning C4273: 'icalerror_errors_are_fatal': inconsistent dll linkage
c:\builds\moz2_slave\tb-try-c-cen-w32-0000000000000\build\calendar\libical\src\libical\icalerror.h(82): note: see previous definition of 'icalerror_errors_are_fatal'

Since I don't know how to fix this, I'm just disabling the warning.

Try:
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=13c78114b6c6
Attachment #8780424 - Attachment is obsolete: true

Comment 72

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #33)
> Just on the last item:
> nsresult is an enum owned by M-C:
> https://dxr.mozilla.org/comm-central/rev/
> 6cf0089510fad8deb866136f5b92bbced9498447/mozilla/xpcom/base/nsError.h#122
> 
> I've seen something about "extending" enums, but no idea how relevant that
> is:
> https://reviews.llvm.org/D2334 (bottom of the page).
> 
> Or from bug 1081010:
> https://bugzilla.mozilla.org/page.cgi?id=splinter.
> html&bug=1081010&attachment=8503016
> switch (static_cast<int>(variable)) {
> 
> For nsresult we should try:
> switch (static_cast<uint32_t>err)) {

there was a patch for switch in bug 1202150:
https://bugzilla.mozilla.org/attachment.cgi?id=8667386

it's unclear why a cast solution is suboptimal but see comments around here:
https://bugzilla.mozilla.org/show_bug.cgi?id=1202150#c14
(Reporter)

Comment 73

a year ago
My push
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=08b8abd26cd5
with Aceman's previous patches actually worked, so the MAPI issue and the ical issue I saw were fixed. That goes to show that the Windows compiler is *far less* fussy then Linux or Mac.

I will repeat now with latest patches after my local compile completes.
(Reporter)

Comment 74

a year ago
Comment on attachment 8780069 [details] [diff] [review]
Part 1: Allow compiler warnings in ldap [landed in comment #74]

Landed LDAP patch:
https://hg.mozilla.org/comm-central/rev/50bcb5618049
Attachment #8780069 - Attachment description: Allow compiler warnings in ldap → Allow compiler warnings in ldap [landed in comment #74]
(Reporter)

Updated

a year ago
Attachment #8780069 - Attachment description: Allow compiler warnings in ldap [landed in comment #74] → Part 1: Allow compiler warnings in ldap [landed in comment #74]
(Reporter)

Comment 75

a year ago
Created attachment 8780795 [details] [diff] [review]
Part 2: WIP - real issues.

Needs to be applied first.
Attachment #8780398 - Attachment is obsolete: true
(Reporter)

Comment 76

a year ago
Created attachment 8780797 [details] [diff] [review]
Part 3: WIP - syntactic issues.

Part 2 and Part 3 refreshed with Aceman's latest work from:
Real - https://hg.mozilla.org/try-comm-central/rev/4b8b8041abf3f1c8d1eba498ce95393c1fabb563
Syntactic - https://hg.mozilla.org/try-comm-central/rev/6b95983bad36057de296352fe47591b635f21358
Attachment #8780400 - Attachment is obsolete: true
(Reporter)

Comment 77

a year ago
Created attachment 8780799 [details] [diff] [review]
Part 4: WIP - Windows

With this patch and part 2/3 a local build works.

Looks like I don't need the
+#ifndef _MSC_VER
   virtual ~nsIMdbHeap() {};
+#endif
I'll remove it in the next round.

Try:
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=946423be1c61
Attachment #8780707 - Attachment is obsolete: true
(Assignee)

Comment 78

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #77)
> Looks like I don't need the
> +#ifndef _MSC_VER
>    virtual ~nsIMdbHeap() {};
> +#endif
> I'll remove it in the next round.

Yes, this didn't link for you due to missing {} which I found out  have to add to linux too. With the {} this should link on all platforms so you do not need to ifndef it.
(Reporter)

Comment 79

a year ago
Created attachment 8780821 [details] [diff] [review]
Part 4: Windows

Maybe we can land this so whatever Aceman does will always compile on Windows.
Attachment #8780799 - Attachment is obsolete: true
Attachment #8780821 - Flags: review?(aleth)

Comment 80

a year ago
Bug 1212068 still has a patch for the warnings that were previously reported on Windows. Maybe it helps with current bustage.
(Reporter)

Comment 81

a year ago
Aceman has the hunks that relate to signed/unsigned from attachment 8670459 [details] [diff] [review] from bug 1212068 covered.
(Assignee)

Comment 82

a year ago
Yes, but I already said I'm fine with landing logically grouped changes in separate bugs so that we do not land a 200KB patch here.
(Assignee)

Comment 83

a year ago
Created attachment 8780823 [details] [diff] [review]
Part 2: WIP - real issues v2
Attachment #8780795 - Attachment is obsolete: true
(Assignee)

Comment 84

a year ago
Created attachment 8780824 [details] [diff] [review]
Part 3: WIP - syntactic issues v2
Attachment #8780797 - Attachment is obsolete: true
(Reporter)

Comment 85

a year ago
Aleth, your "win-reduced" won't work, you need the ical stuff, see:https://archive.mozilla.org/pub/thunderbird/try-builds/mozilla@jorgk.com-af8a4880f2ee41cf3efc93870723d8809e3dbf08/try-comm-central-win32/try-comm-central-win32-bm76-try1-build4.txt.gz

Also, if you don't remove the second definition for _WIN32_WINNT it won't compile either.

I'm not sure why you're redoing the experiments I've already done and documented here.

Comment 86

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #85)
> I'm not sure why you're redoing the experiments I've already done and
> documented here.

Don't worry, I'm not redoing your work.
(Reporter)

Comment 87

a year ago
Has anyone considered to ignore warnings in Mork like we do in LDAP for the time being?

Comment 88

a year ago
Created attachment 8780836 [details] [diff] [review]
Part 5: Allow compiler warnings in libical [landed in comment 93]
Attachment #8780836 - Flags: review?(acelists)

Updated

a year ago
Assignee: nobody → acelists
Severity: major → blocker

Comment 89

a year ago
Comment on attachment 8780821 [details] [diff] [review]
Part 4: Windows

lgtm. I'll let aceman decide how it fits in with his patch series.
Attachment #8780821 - Flags: review?(aleth) → review?(acelists)
(Assignee)

Comment 90

a year ago
Comment on attachment 8780836 [details] [diff] [review]
Part 5: Allow compiler warnings in libical [landed in comment 93]

Review of attachment 8780836 [details] [diff] [review]:
-----------------------------------------------------------------

OK, if libical is third-party code, it does not make much sense to maintain it when it gets pulled from upstream. I also think it is destined to be removed soon (replaced by the JS version).
Attachment #8780836 - Flags: review?(acelists) → review+

Comment 91

a year ago
(In reply to :aceman from comment #90)
> OK, if libical is third-party code, it does not make much sense to maintain
> it when it gets pulled from upstream. I also think it is destined to be
> removed soon (replaced by the JS version).

Makemyday also approved this on IRC.
(Assignee)

Comment 92

a year ago
Comment on attachment 8780821 [details] [diff] [review]
Part 4: Windows

Review of attachment 8780821 [details] [diff] [review]:
-----------------------------------------------------------------

::: calendar/libical/src/libical/icalerror.h
@@ +69,5 @@
>   *  @warning NOT THREAD SAFE -- recommended that you do not change
>   *           this in a multithreaded program.
>   */
>  #ifdef _MSC_VER
> +#pragma warning (disable : 4273)

Please see if this can hunk can be dropped after aleth's path (warnings allowed in libical).

::: mailnews/mapi/mapihook/build/moz.build
@@ -11,5 @@
>  
>  for var in ('REGISTER_PROXY_DLL', 'UNICODE', '_UNICODE'):
>      DEFINES[var] = True
>  
> -DEFINES['_WIN32_WINNT'] = '0x400'

The removal seems fine, but what is the replacement?

In other mail files we do:
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
(https://dxr.mozilla.org/comm-central/source/mail/components/shell/nsMailWinIntegration.cpp)

Can you try that with 0400? Maybe the pragma is not needed then.
(Assignee)

Comment 93

a year ago
Comment on attachment 8780836 [details] [diff] [review]
Part 5: Allow compiler warnings in libical [landed in comment 93]

https://hg.mozilla.org/comm-central/rev/fa297b77de80624ec40619da331c0ee306613e83
Attachment #8780836 - Attachment description: Part 5: Allow compiler warnings in libical → Part 5: Allow compiler warnings in libical [landed in comment 93]
(Reporter)

Comment 94

a year ago
Created attachment 8780846 [details] [diff] [review]
Part 4: Windows (v2) [landed in comment 104]

(In reply to :aceman from comment #92)
> Please see if this can hunk can be dropped after aleth's path (warnings
> allowed in libical).
Yes, it can. I tried it and it works locally. I was under the impression that you were working on a patch to fix libical issues:
https://hg.mozilla.org/try-comm-central/rev/08a318933dd5
but I see that's not finished and I also see that libical is 3rd party software.

> The removal seems fine, but what is the replacement?
The beauty is: There is no replacement. That's the whole idea.
The only replacement is the pragma and that's quite frequently used in M-C:
https://dxr.mozilla.org/comm-central/search?q=pragma+4996&redirect=false

> In other mail files we do:
> #ifdef _WIN32_WINNT
> #undef _WIN32_WINNT
> #define _WIN32_WINNT 0x0600
> (https://dxr.mozilla.org/comm-central/source/mail/components/shell/
> nsMailWinIntegration.cpp)
> Can you try that with 0400? Maybe the pragma is not needed then.
I haven't been twiddling my thumbs either ;-)
That's been tried already:
https://hg.mozilla.org/try-comm-central/rev/01a7d1d3f89bdff43fcc2c93ec317cc9e8a58d0d#l6.8
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=1d6caf195e61b9a468fcdaa10c9388abc5e19686&selectedJob=20855

There result is:
sdkddkver.h(280): fatal error C1189: #error: _WIN32_WINNT settings conflicts with _WIN32_IE setting
So I prefer not to mess with this define when a commonly used pragma is an easy way out here.
Attachment #8780821 - Attachment is obsolete: true
Attachment #8780821 - Flags: review?(acelists)
Attachment #8780846 - Flags: review?(acelists)
(Reporter)

Comment 95

a year ago
Aceman, I'm a little confused as to what the latest patches are to try, so maybe you can just land "Part 4" or include it in one of your try pushes. I saw that Aleth got a green Linux try push and I got green Windows try pushes, so perhaps we can just review and land those patches and worry about the fussy Mac compiler later. It would be good to have a build on two platforms.
(Assignee)

Comment 96

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #94)
> (In reply to :aceman from comment #92)
> > Please see if this can hunk can be dropped after aleth's path (warnings
> > allowed in libical).
> Yes, it can. I tried it and it works locally. I was under the impression
> that you were working on a patch to fix libical issues:
Yes I tried, before we got it is 3rd party code.

> There result is:
> sdkddkver.h(280): fatal error C1189: #error: _WIN32_WINNT settings conflicts
> with _WIN32_IE setting
> So I prefer not to mess with this define when a commonly used pragma is an
> easy way out here.
OK, I'm not happy with the solution as we don't really understand what the setting did. But we can try it. Watch out for mapi reports :)

It is still in the Makefile in that folder. Will you remove it or is that one never used?

(In reply to Jorg K (GMT+2, PTO during summer) from comment #95)
> Aceman, I'm a little confused as to what the latest patches are to try, so
> maybe you can just land "Part 4" or include it in one of your try pushes. I
> saw that Aleth got a green Linux try push and I got green Windows try
> pushes, so perhaps we can just review and land those patches and worry about
> the fussy Mac compiler later. It would be good to have a build on two
> platforms.

I don't think any of the greens were achieved without Part 2 and 3. But sure when Part 4 is fine we can land it soon.
(Assignee)

Comment 97

a year ago
But if you meant to land Parts 2 & 3 as they are (when I upload current versions) to get Linux and Windows going and then make a Part 6 for the remaining OS X issues, that is also a possibility.
Give me an hour as we think we are also very close on OS X. If that proves incorrect we can proceed with the plan with Part 6.
(Reporter)

Comment 98

a year ago
(In reply to :aceman from comment #96)
> OK, I'm not happy with the solution as we don't really understand what the
> setting did. But we can try it. Watch out for mapi reports :)
There won't be any since Outlook import is (permanently) disabled.

> It is still in the Makefile in that folder. Will you remove it or is that
> one never used?
I don't intend to do anything else.

(In reply to :aceman from comment #97)
> Give me an hour as we think we are also very close on OS X.
At your disposal until midnight ;-)
(Assignee)

Comment 99

a year ago
Comment on attachment 8780846 [details] [diff] [review]
Part 4: Windows (v2) [landed in comment 104]

Review of attachment 8780846 [details] [diff] [review]:
-----------------------------------------------------------------

OK, let's try it.
Attachment #8780846 - Flags: review?(acelists) → review+
(Assignee)

Comment 100

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #98)
> (In reply to :aceman from comment #96)
> > OK, I'm not happy with the solution as we don't really understand what the
> > setting did. But we can try it. Watch out for mapi reports :)
> There won't be any since Outlook import is (permanently) disabled.

Outlook is no Eudora and should be enabled back in the long run.

Also, AFAIK MAPI has no relation to Outlook import.
(Reporter)

Comment 101

a year ago
(In reply to :aceman from comment #99)
> Attachment #8780846 [details] [diff] - Flags: review?(acelists@atlas.sk) → review+
Please land or include in your try pushes as you deem fit ;-)
(Assignee)

Comment 102

a year ago
I'll push it now, but I will rather just comment out the define instead of removing it.
I think we have bugs about MAPI gradually deteriorating in newer Windows versions. If somebody takes it on, he may have a clue for what that define is needed (and give him some hint).
(Reporter)

Comment 103

a year ago
(In reply to :aceman from comment #102)
> I think we have bugs about MAPI gradually deteriorating in newer Windows
Maybe because it was stuck at Windows 95 (0x400)?
(Assignee)

Comment 104

a year ago
Comment on attachment 8780846 [details] [diff] [review]
Part 4: Windows (v2) [landed in comment 104]

https://hg.mozilla.org/comm-central/rev/be4c5a82c1c04686dedf282cc9fca2168c361b8b

I commented out the _WIN32_WINNT define instead of removing it, to keep some clues.
Attachment #8780846 - Attachment description: Part 4: Windows (v2). → Part 4: Windows (v2) [landed in comment 104]
(Assignee)

Comment 105

a year ago
Created attachment 8780863 [details] [diff] [review]
Part 2: real issues v3

These warnings now cause build failures on at least one platform. I separated these out as the fixes aren't just mechanical syntax changes. They may change behaviour as the warnings could have found real bugs.

Successful try runs:
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=40cbb8dd3d9b3e55440983facac2a484e3fb361d
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=bb91d63c03667284870bfe13421263c7b43f1203
Attachment #8780823 - Attachment is obsolete: true
Attachment #8780863 - Flags: review?(rkent)
Attachment #8780863 - Flags: review?(mkmelin+mozilla)
(Assignee)

Comment 106

a year ago
Created attachment 8780865 [details] [diff] [review]
Part 3: syntactic issues v3

This one is also needed to remove warnings on at least one platform. But these seem to be mostly syntactic changes. They just need decision if the way to silence the warning is acceptable.
Try runs are the same as in previous comment.
Attachment #8780824 - Attachment is obsolete: true
Attachment #8780865 - Flags: review?(jorgk)
Attachment #8780865 - Flags: review?(aleth)

Comment 107

a year ago
Comment on attachment 8780863 [details] [diff] [review]
Part 2: real issues v3

Review of attachment 8780863 [details] [diff] [review]:
-----------------------------------------------------------------

Looks ok to me

::: mailnews/base/src/nsMsgDBView.cpp
@@ +6377,5 @@
>        // the caller needs to have adjusted m_keys before getting here, since
>        // RowCountChanged() will call our GetRowCount()
>        mTree->RowCountChanged(firstLineChanged, numChanged);
>        mRemovingRow = false;
> +      MOZ_FALLTHROUGH; // really?

I think we can skip the comment ;)
Attachment #8780863 - Flags: review?(mkmelin+mozilla) → review+
(Reporter)

Comment 108

a year ago
Comment on attachment 8780865 [details] [diff] [review]
Part 3: syntactic issues v3

You wouldn't believe it, but I looked through the whole lot.
As mentioned in IRC, the cost -> const correction needs to go into the other patch.

I'm more used to "#if 0" instead of "#if false".

Perhaps put a comment on the replace function and the ugly if (false && ...).

THANKS!!
Attachment #8780865 - Flags: review?(jorgk) → review+

Comment 109

a year ago
Comment on attachment 8780865 [details] [diff] [review]
Part 3: syntactic issues v3

Review of attachment 8780865 [details] [diff] [review]:
-----------------------------------------------------------------

::: mailnews/compose/src/nsMsgAppleEncode.cpp
@@ +43,5 @@
>  **	write_stream.
>  */
>  int write_stream(
>  	appledouble_encode_object *p_ap_encode_obj,
> +	const char *out_string,

Some additional changes needed in this file - I provided a patch over IRC.
Attachment #8780865 - Flags: review?(aleth) → review-
(Assignee)

Comment 110

a year ago
(In reply to Magnus Melin from comment #107)
> ::: mailnews/base/src/nsMsgDBView.cpp
> @@ +6377,5 @@
> >        // the caller needs to have adjusted m_keys before getting here, since
> >        // RowCountChanged() will call our GetRowCount()
> >        mTree->RowCountChanged(firstLineChanged, numChanged);
> >        mRemovingRow = false;
> > +      MOZ_FALLTHROUGH; // really?
> 
> I think we can skip the comment ;)

It was for the reviewer, as I am not sure the place really wanted a passthrough.
(Reporter)

Comment 111

a year ago
Comment on attachment 8780863 [details] [diff] [review]
Part 2: real issues v3

Review of attachment 8780863 [details] [diff] [review]:
-----------------------------------------------------------------

I saw lots of ugly code, the winner is:
#if 0
    bool searchable=false;
    rv = m_nntpServer->QueryExtension("LISTSUBSCR",&listsubscr);
    if (NS_SUCCEEDED(rv) && listsubscr)
#else
  if (0)
#endif
  {
Terrible!!

::: mailnews/local/src/nsLocalMailFolder.cpp
@@ +1727,2 @@
>      rv = msgArray->AppendElement(aSupport, false);
> +    NS_ENSURE_SUCCESS(rv, rv);

Maybe set hasMoreElements = false; in case the following doesn't succeed. Just good practise to initialise out parameters.
Attachment #8780863 - Flags: review+
(Reporter)

Comment 112

a year ago
As discussed on IRC:
You might as well change both these:
https://dxr.mozilla.org/comm-central/search?q=kABAIMInstantProperty&redirect=false
(Assignee)

Comment 113

a year ago
(In reply to Jorg K (GMT+2, PTO during summer) from comment #111)
> I saw lots of ugly code, the winner is:
> #if 0
>     bool searchable=false;
>     rv = m_nntpServer->QueryExtension("LISTSUBSCR",&listsubscr);
>     if (NS_SUCCEEDED(rv) && listsubscr)
> #else
>   if (0)
> #endif
>   {
> Terrible!!

Yes, this was interesting :) That's what we get if there is no comment on why something was disabled.
Created attachment 8780868 [details] [diff] [review]
portable.patch

If you do additional ldap changes you might want to check this. Seems to be no longer needed for recent VC versions and shows a redefine warning.
(Assignee)

Comment 115

a year ago
Comment on attachment 8780868 [details] [diff] [review]
portable.patch

(In reply to Frank-Rainer Grahl from comment #114)
> If you do additional ldap changes you might want to check this. Seems to be
> no longer needed for recent VC versions and shows a redefine warning.

We have decided to ignore warnings for now in LDAP SDK as it is 3rd party code.
While there were some changes floating around here, they were finally scraped and won't be landing.

Also, I'm not sure we can decide on the correctness of this patch here quickly (we are no experts on the LDAP code). Please open a new bug for it and request a review from jcranmer. Thanks
Attachment #8780868 - Attachment is obsolete: true
Attachment #8780868 - Flags: review-
(Assignee)

Comment 116

a year ago
Created attachment 8780874 [details] [diff] [review]
Part 2: real issues v4

Updated final patch, with minor tweaks for OS X *AppleEncoding* files, thanks to aleth.
Attachment #8780863 - Attachment is obsolete: true
Attachment #8780863 - Flags: review?(rkent)
Attachment #8780874 - Flags: review?(rkent)
(Assignee)

Comment 117

a year ago
Created attachment 8780875 [details] [diff] [review]
Part 3: syntactic issues v4 [landed in comment 126]

Final patch, makes OS X build (except mork).
Attachment #8780865 - Attachment is obsolete: true
Attachment #8780875 - Flags: review?(aleth)
(Assignee)

Comment 118

a year ago
Created attachment 8780876 [details] [diff] [review]
Part 6: warnings in mork [landed in comment 130]

This one is the final block to make OS X build:
https://treeherder.mozilla.org/#/jobs?repo=try-comm-central&revision=31003c492a83d1fc502578afcdea842b5701f046

Contains some strange constructs like "if (this) {...}" or "if (&reference) {}" on which Clang complained that they should be always true in proper C++"
Attachment #8780876 - Flags: review?(rkent)
Attachment #8780876 - Flags: review?(jorgk)
(Assignee)

Updated

a year ago
Status: NEW → ASSIGNED

Comment 119

a year ago
Comment on attachment 8780874 [details] [diff] [review]
Part 2: real issues v4

Review of attachment 8780874 [details] [diff] [review]:
-----------------------------------------------------------------

::: mailnews/compose/src/nsMsgAppleDoubleEncode.cpp
@@ +144,5 @@
>  	*/
>  	if (p_ap_encode_obj->s_overflow)
>  	{
> +		status = write_stream(p_ap_encode_obj,
> +		                      (const char*)(p_ap_encode_obj->b_overflow),

These tweaks were probably meant for the other patch, where the write_stream definition is changed ;) Not that it matters much...

Comment 120

a year ago
Comment on attachment 8780875 [details] [diff] [review]
Part 3: syntactic issues v4 [landed in comment 126]

Review of attachment 8780875 [details] [diff] [review]:
-----------------------------------------------------------------

Thanks!
Attachment #8780875 - Flags: review?(aleth) → review+
(Assignee)

Comment 121

a year ago
(In reply to aleth [:aleth] from comment #119)
> These tweaks were probably meant for the other patch, where the write_stream
> definition is changed ;) Not that it matters much...

Yes, done, thanks.
Comment hidden (obsolete)
(Reporter)

Comment 123

a year ago
Comment on attachment 8780874 [details] [diff] [review]
Part 2: real issues v4

Do we really need four reviewers here?
Magnus, Aleth and myself have been through it.
Attachment #8780874 - Flags: review?(rkent) → review+
(Assignee)

Comment 124

a year ago
Created attachment 8780893 [details] [diff] [review]
Part 2: real issues v4.1 [landed in comment 131]
Attachment #8780874 - Attachment is obsolete: true
Attachment #8780893 - Flags: review?(rkent)
Comment hidden (obsolete)
(Assignee)

Comment 126

a year ago
Comment on attachment 8780875 [details] [diff] [review]
Part 3: syntactic issues v4 [landed in comment 126]

https://hg.mozilla.org/comm-central/rev/28876b046ec271296611b271d6329937889dc694
Attachment #8780875 - Attachment description: Part 3: syntactic issues v4 → Part 3: syntactic issues v4 [landed in comment 126]
(Reporter)

Comment 127

a year ago
Comment on attachment 8780876 [details] [diff] [review]
Part 6: warnings in mork [landed in comment 130]

Sorry, ignore my previous comment #122 for this patch, they were meant for Part 2 as can be seen in comment #123.

Anyway, I've been through this and there is nothing exciting happening. The fixes fall into five categories:

1) if (this) or if (!this)
2) if (&argument)
3) removed register
4) missing override.
5) Additions of identical functions (which Windows complains about).
(Reporter)

Comment 128

a year ago
Comment on attachment 8780893 [details] [diff] [review]
Part 2: real issues v4.1 [landed in comment 131]

OK, repeating comment #123 for the previous version of this patch:

Do we really need four reviewers here?
Magnus, Aleth and myself have been through it.

Can we land the two missing parts (no idea why Part 3 was landed separately). I've checked that the change in nsMsgAppleCodes.h/nsMsgAppleDoubleEncode.cpp was removed here and already landed in Part 3).
Attachment #8780893 - Flags: review?(rkent) → review+
(Reporter)

Comment 129

a year ago
If it makes you happy: I've done an interdiff of Part 2: v2 (r+ from Magnus and myself) and v4.1 and I fully approve those extra changes.
(Assignee)

Comment 130

a year ago
Comment on attachment 8780876 [details] [diff] [review]
Part 6: warnings in mork [landed in comment 130]

https://hg.mozilla.org/comm-central/rev/3e4c9e3a9099b0bb077255abb75463784ee929e5
Attachment #8780876 - Attachment description: Part 6: warnings in mork → Part 6: warnings in mork [landed in comment 130]
(Assignee)

Comment 131

a year ago
Comment on attachment 8780893 [details] [diff] [review]
Part 2: real issues v4.1 [landed in comment 131]

https://hg.mozilla.org/comm-central/rev/7f35b399aa0050d2cdc1f83e7aac54230b9d03e1
Attachment #8780893 - Attachment description: Part 2: real issues v4.1 → Part 2: real issues v4.1 [landed in comment 131]
(Assignee)

Comment 132

a year ago
All platforms building now and tests seem unaffected.
I think we are done here.
Thanks to aleth and jorgk for quick cooperation :)
Status: ASSIGNED → RESOLVED
Last Resolved: a year ago
Resolution: --- → FIXED
Target Milestone: --- → Thunderbird 51.0
5 automation job failures were associated with this bug in the last 7 days.

Repository breakdown:
* comm-central: 5

Platform breakdown:
* osx-10-7: 2
* linux64: 2
* linux32: 1

For more details, see:
https://brasstacks.mozilla.com/orangefactor/?display=Bug&bugid=1294260&startday=2016-08-08&endday=2016-08-14&tree=all
(Assignee)

Updated

a year ago
Blocks: 1296151
(Assignee)

Updated

a year ago
Blocks: 1232306

Comment 134

11 months ago
Hi, I have uploaded a set of patches to compile LDAP with -Werror=sign-compare in
Bug 1243121 - C-C ldap directory: fix -Werror=sign-compare: signed vs unsigned warnings (now treated as errors) 
(I edited the title a bit)
so that if someone is willing to modify the LDAP files, they can use it as a comparison/starting point/whatever.
Mostly it is a cast at the time of usage, but there are a few variable type declarations.

TIA

Updated

11 months ago
See Also: → bug 1243121
You need to log in before you can comment on or make changes to this bug.