D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 6158 - winsamp and dhry samples need an update
Summary: winsamp and dhry samples need an update
Status: RESOLVED FIXED
Alias: None
Product: D
Classification: Unclassified
Component: dmd (show other issues)
Version: D2
Hardware: Other Windows
: P2 normal
Assignee: No Owner
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-06-14 18:20 UTC by Andrej Mitrovic
Modified: 2011-06-17 21:11 UTC (History)
1 user (show)

See Also:


Attachments
description (36.14 KB, application/x-zip-compressed)
2011-06-14 18:21 UTC, Andrej Mitrovic
Details

Note You need to log in before you can comment on or make changes to this issue.
Description Andrej Mitrovic 2011-06-14 18:20:05 UTC
winsamp:

- WinMain was catching Exceptions instead of Throwable. Throwable should be caught in order to demonstrate the creation of a message box on a null dereference.

- With optimizations On the compiler is smart enough to detect that a null dereference is in play and it denies compilation. To trick the compiler I've made a pointer variable in module scope which is null-initialized.

- The example was leaking GDI objects. Here's a tip: 
In the task manager, select View>Select Columns> and put a check next to GDI Objects. On the old example try resizing the window and witness the holy grail of GDI leakage!

- The example used old-style prototypes of runtime initialization functions. I've replaced this with an import to cure.runtime and used that inside of WinMain.

- Added a pragma to gdi32.lib, and a note that the user can compile via "-L-Subsystem:Windows". .def files are rarely required unless you're doing something super-special like renaming symbols. 

- The window size was too small to even show the message.

- The switch statements were missing default cases. The example wouldn't compile in the next release.

The updated sample is in the attachment. Tested on XP32 and Win7.

dhry: Just a missing default case.

Finally, why aren't the samples on Github anywhere?
Comment 1 Andrej Mitrovic 2011-06-14 18:21:23 UTC
Created attachment 1000 [details]
description
Comment 2 Walter Bright 2011-06-15 00:55:14 UTC
The samples are now on github!

https://github.com/D-Programming-Language/dmd/tree/master/samples

So now pull requests can be done.
Comment 3 Andrej Mitrovic 2011-06-15 08:58:03 UTC
Yay, thanks a bunch!! I'll make a pull later.