~ How to make Opera v4.02 usable ~
Courtesy of fravia's searchlores.org, November 2000
Original file @ http://members.fortunecity.com/iixii/
Well, iixii had to send me this file twice, since opera's email function is malfunctioning as well :-)
A great essay in the best reversers' tradition: we ameliorate our tool, we fix bugs, we do whatever we want and fancy with our software... and the people at Opera (who should be ashamed to let such a good program on a bug infested downhill path) should thank us (in this case iixii), gefaellig... have a look and enjoy (and then, by all means, use the ameliorated version of Opera)

How to make Opera v4.02 usable
Update: 19.11.00 (javascript bug, email sort bug, attachment bug)
Last Update: 24.11.00 (mail retrieving bug finally corrected)

OK, so you just downloaded Opera for Windows 4.02 -- The Best Getting Even Better --, and discovered that it really has got worse. The major version change means they have completely redone it, and introduced LOTS of new bugs on the way. Nonetheless, it is a great program, small, efficient, lots of features you always wanted, and with the email and news integration, it is a really good all-in-one browser.
Just that the email client is the source of the most horribly obvious bugs. The minor version "02" suggests it isn't exactly a beta version anymore, but some bugs are so overwhelmingly stupid one might think the programmers are blind or constantly drunk.
Anyway, I sat down and did what I had to do. Apart from fixing real bugs, there were things which I wanted Opera to do MY way, so there are two sections below, the first deals with real bugfixes, the second with "adjustments". The bytes which have to be changed in the appropriate DLL and the corresponding offsets are given in hexadecimal. If you don't know how to do byte patches (which by the way you SHOULD, there are quite enough tutorials and tools out there), the fixed and tweaked files are available for download at the bottom, but of course just downloading and replacing them denies you the possibility of choosing which bugfixes/tweaks to apply and which not.
Feel free to submit this site to any mailing lists/search engines/discussion groups/FAQs, it is important to reach those desperate Opera users which would otherwise turn their backs on this good program and return to Nutscrape or Internet Exploiter.
If you have any suggestions concerning this site or discover/repair bugs which aren't addressed here yet, email me.

Hope this helps,
IIXII


All byte changes apply to OMAIL32.DLL, whose size should be 262193 bytes, to be sure you have exactly the same version.
New: This page now also can be found at Fravia's (Introduction/Tutti all'opera!).

Bugfixes:
Tweaks:
Downloads


Mail preferences bug
The newsgroups and mailing lists are being FLOODED with complaints about this unbelievable failure of notice. I just had to include the disassembled source (for those who are interested).
This is the guilty part of OMAIL32.DLL:
.text:1001D364 83 7D 0C 00    cmp     [ebp+arg_4], 0
.text:1001D368 74 3A          jz      short use_default_val
.text:1001D36A 83 65 0C 00    and     [ebp+arg_4], 0
.text:1001D36E 8D 4D 0C       lea     ecx, [ebp+arg_4]
.text:1001D371 6A 0A          push    0Ah        ;number base
.text:1001D373 51             push    ecx        ;pointer to result
.text:1001D374 50             push    eax        ;pointer to cfg value
.text:1001D375 E8 AA 9B 00 00 call    _strtol    ;convert string to int
.text:1001D37A 8B F8          mov     edi, eax
....
.text:1001D38F 8B 45 08       mov     eax, [ebp+result]
....
.text:1001D39D 89 38          mov     [eax], edi
....
use_default_val:
It's part of a function which converts all preferences which are numbers (also on/off preferences). As you can plainly see, there is an argument to the function which tells it to always use the default value if it's zero. I suppose the programmers put this in for testing, BUT FORGOT TO REMOVE IT AGAIN, causing Opera to use DEFAULT VALUES every time you restarted it. The astonishingly simple solution is to delete the jump.
OFFSET 1D368   74 3A -> 90 90
Column sort bug
In a mail folder window, you can click on the column headers of the mail list and the mails are sorted accordingly. This setting is saved, on opening a new mail folder window, the red arrow is where it should be, only the sorting isn't performed! This bug is nearly as stupid as the preferences bug, because on adding a new mail to the list, its expected position is calculated, but not USED, it is always inserted at the end of the list. This time a jump has to be inserted to FORCE resorting of the list. If you apply the patch, the bug still occurs when unread mails are retrieved from the server, they are always inserted at the beginning of the list. Just change to a different folder and back to Inbox, then they are sorted.
OFFSET 15E29   74 2D -> EB 24
Word wrap bug
In the email preferences, you can specify the maximum characters per line, longer lines are automatically wrapped. The mail input field is a RichEdit control, which supports wrapping automatically, but the line width must be set in twips, which are calculated using the current screen resolution in dpi. On all three machines I tested this on, Windows tells Opera that the resolution is 96 dpi, while the RichEdit control seems to use 108 dpi. Can anyone give me a hint on this?? If you experience the same problem, that the lines are 12.5% longer than specified, use the following patch.
OFFSET 13FC0   75 03 6A 60 -> 90 90 6A 6C
Javascript variable error
There is a very annoying Javascript interpretor bug in the allocation of global variables. If a function is called across document boundaries, e.g. a frame child calls a function of the parent document, the latter function cannot allocate ANY global variable!! I haven't been able to fix this up to now.

Hangs while downloading mail
Many people also experienced this bug, but lots of others didn't. Unfortunately I belonged to the latter, so I couldn't reproduce the bug at first. Then I found an account per chance which showed the same error: While retrieving mail, sometimes one or two mails were received correctly, but then Opera invariably stopped in the middle of a mail. The mail transfer could be aborted normally by clicking on the red x. The error was hard to trace, but here it is: When retrieving mail, the end of the mail body is marked by the server with 2E 0D 0A, a line containing only a single dot. Mails are always splitted into blocks when being transmitted, and just a few mail servers send this end marker in a seperate block, just containing these three bytes. But Opera checks for 0A 2E 0D 0A, so the line with the single dot is only noticed if it follows a line with other contents. If the end marker is sent in a single block, Opera won't notice, and try to receive more mail contents, which will never come. Once found, not too hard to patch:
OFFSET 1C8E4   04 -> 03
OFFSET 1C8F0   04 -> 03
OFFSET 1C8F2   DC -> DD
OFFSET 1C8F9   FC -> FD
Attachment bug
Many people have reported problems with mail attachments. I never had any, but based on those reports, the problem is that Opera specifies a content boundary string like "_OPERAB__-H1HtX6bHMUjxHyf6zh47KD", and something about that seems to be illegal. Any comments??

Language file bug
I suppose this affects all language files. The language files specify replacement strings for menu and dialog items and popup tooltips. The numbers are identical to the internal IDs. But the programmers assigned some IDs *twice*, so the tooltips alternate between the right and the wrong string. You have to comment out the duplicates, which isn't so bad because those don't have to be translated anyway!!
Comment out the following lines in DE402.LNG
;10966="*.bmp"
;10969="http"
;10970="https"
;10972="ftp"
;10973="gopher"
;10974="wais"
;10949="Bitte Nickname eingeben"
;10945="Beschreibung"
;10955="Screenreader kompatible Menüs"
;10958="TN3270 Programm"
Mail list window size
A mail folder window is initially divided equally into the mail list (upper part) and the mail view (lower part). My mail list is usually short, while the mails themselves aren't. You can move the separator up, but this setting isn't saved. The size is calculated as follows:
Percentage relative to whole window = (Dword at Offset 2000C)/655.36
Example: To make the mail list have 9 entries (28% of whole window), change
OFFSET 2000C   00 80 00 00 -> 00 48 00 00
Exchanging mailbox columns
The columns can be resized, but not exchanged. This is bad because I'm used to having the subject appear before date and size. So what? BTW: There are quite a lot of bytes to change. The first three exchange the labels, the next three exchange the contents, and the rest are responsible for making the sort criteria work again.
OFFSET 14A6B   CC -> CB
OFFSET 14A90   CF -> CC
OFFSET 14ABF   CB -> CF (labels)
OFFSET 14C6E   1C -> 20
OFFSET 14C78   20 -> 24
OFFSET 14C8C   24 -> 1C (contents)
OFFSET 157E4   0F 84 9E 00 00 00 49 74 51 49 0F 85 09 02 00 00
            -> 74 0E 49 0F 84 9B 00 00 00 49 EB 4E 90 90 90 90
OFFSET 153BA & 153BD & 153DA & 153DD   1C -> 20
OFFSET 15802 & 1581C 06 -> 04
OFFSET 1584C & 15866 05 -> 06
OFFSET 15896 & 158B0 04 -> 05
OFFSET 157F7   AC -> A8
OFFSET 15841   AA -> AC
OFFSET 1588B   A8 -> AA (sort on header click)
Default mailbox column size
This is more or less a bugfix, but closely related to the previous tweak, thus listed here. You can resize the columns, the setting is saved in COLUMNS.DAT, but not always properly loaded. So you can change the default sizes, the values given correspond to the exchanged columns.
OFFSET 14958   14    -> 00    Column 1&2
OFFSET 149F1   14    -> 13    Column 3
OFFSET 14A3D   A0             Column 4
OFFSET 14A7F   78 00 -> 8B 01 Column 5
OFFSET 14AAA   32    -> 78    Column 6
OFFSET 14ABC   -1             Column 7
Incomplete german language file
The translator forgot several items. Add the following lines in DE402.LNG in the appropriate sections:
[Translation]:
10920="Lesezeichen für aktuelle Seite erstellen"
10921="Lesezeichenordner erstellen"
10922="Lesezeichenbefehle"
10925="Adresse erstellen"
10926="Adressordner erstellen"
10927="Adressbefehle"
14494="Wollen Sie wirklich:\r\n\r\n     Alle Fenster schließen\r\n\r\n     
       Alle nicht-dauerhaften Cookies löschen\r\n\r\n     Alle Passwörter
       löschen\r\n\r\n     Alle Dokumente aus dem Cache entfernen, die mit
       einem Passwort oder Verschlüsselung geladen wurden\r\n\r\n\r\nSind
       sie sicher?"
14495="Private Daten löschen"

[Menu]:
14493="Private &Daten löschen"
10059="Öffne &WWW-Adresse (URL)\tF2"
10087="Zu &Lezeichen hinzufügen\tCtrl+T"
12035="&Verknüpftes Fenster öffnen"
10523="Fenstereinstellungen speichern"
Download patched omail32.zip (145920 bytes)
Warning: The DLL contains all bugfixes and tweaks mentioned above. It is compressed with ASpack, so it is downloaded faster and makes Opera even smaller on your hard disk. Still check that the size of the file you replace is 262193 bytes.

Download ZIPed german language file DE402.LNG (28480 bytes)

Made with Norton Editor 2.0 for DOS [und vieeel Zeit]

Finally, since we are on a "Opera" page, a famous svdism (Svd's wisdom):
"hit ctrl-B in opera. Then LEARN it by mind!"
you'll thank me more than once for this advice...

back to tutti all'opera!
Back to tutti all'opera!
(c) 2000: [fravia+], all rights reserved