TweetFollow Us on Twitter

May 95 Tips
Volume Number:11
Issue Number:5
Column Tag:Tips & Tidbits

Tips & Tidbits

By Scott T Boyd, Editor

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

TIP OF THE MONTH

Flush Out Your Bugs

Before releasing an application to your testers, load these three extensions: EBBE (Even Better Bus Error), DisposeResource, and DoubleTrouble. They check for NIL dereferences, improperly-disposed resources, and multiply-disposed memory manager blocks. [You can find these extensions in many places, including our ftp and other online sites - Ed stb] Run your application. You may be surpised at what you find.

Using these debugging tools, I caught a bug in an application based on the 1/18/95 release of Sprocket. This bug was fixed in the 1/25/95 Sprocket release, and does not exist in the 12/94 release. I’m using this code both as an example and a suggested patch if you are using the 1/18 version of Sprocket.

TSplashWindow::~TSplashWindow()
        {
        if (fSplashPicture)
                DisposeHandle((Handle) fSplashPicture);  // Oops!
        this->Close();
        }

TWindow::Close(void)
        {
        WindowPtr       newFrontWindow = nil;
        if (FrontNonFloatingWindow() == fWindow)
          newFrontWindow = (WindowPtr)((WindowPeek)fWindow)->nextWindow;
        this->Activate(false);
        DisposeWindow(fWindow);
        if (newFrontWindow)
           HiliteAndActivateWindow(newFrontWindow,true);
        return true;
        }

When I ran the executable, I dropped into my low level debugger, and looked at the stack. Return addresses on the stack from the MacsBug stack crawl sc7:

  Stack Addr  Frame Addr   Caller
   01C6ECD0               01B6D6D2 'CODE 0001 2690 Sprocket Lib'+0172
   01C6ECC8               01B6D692 'CODE 0001 2690 Sprocket Lib'+0132
   01C6ECAA    01C6ECA6   01B6E9F8 main+01F2
   01C6EC9E    01C6EC9A   01B6EF7A TSplashWindow::~TSplashWindow()+002C
   01C6EC88               01B6FA3C TWindow::Close()+0034
   01C6EC80    01C6EC7C   408578C4 _DisposeWindow+0004
   01C6EC6C               4085A846 _FrontWindow+0096
   01C6EC54               40877EB4 _KillPicture+0004
   01C6EC40               4085785C _NewWindow+010C
   01C6EC34               40877EB4 _KillPicture+0004
   01C6EC30               4085785C _NewWindow+010C

From this stack trace I saw that fSplashPicture got disposed again by DisposeWindow(fWindow); A review of the code showed the offending extra Dispose in ~TSplashWindow().

Why not leave these debugging resources on your system all the time? Well, it appears that not everyone uses these tools religiously and several other of my favorite (nameless) applications write to location Zero and trigger EBBE. I’ve sent in bug reports to the offenders, but I am still waiting for all the update releases.

Happy Bug Trails!

- Gary W. Powell
gpowell@mv.us.adobe.com

Powering Up The RTM Instruction

For you power programmers out there, here’s a little tip on taking advantage of the PowerPC architecture. Where you might have used the 68020 RTM instruction (Return from Module), you can get a lot of mileage by using the new PowerPC RTFM instruction instead. We can assure you that you will save literally hours of time.

- David Gorkan and Allan Foster

Save a Little Time

Here is a great and easy way to supercharge File Open... File Save and File Save As... operations from any application, especially if you use the Apple Menu Items to store aliases to folders: Make an alias of the Apple Menu Items folder and put it on the Desktop.

What does that get you? Well, since the Standard file Get and Put Dialogs all have a Desktop button, you can easily get to the Apple Menu Items, and hence access any aliases that are stored there. Just Click on the Desktop folder and the Apple Menu Item Alias appears as a supercharged Volume of Aliases.

But wait, there’s more! You get a real bonus from using System 7.5 because, if you put the Apple Menu Items alias onto the desktop, System 7.5 maintains automated folders, so the Apple Menu Items Alias can be used to get to “Recent Documents”. The “Recent Servers” can be used to log onto to any server without leaving the application that you are running.

- Mark Tillinghast
XXCAL, Testing And Systems Division
mark_tillinghast@lamg.com

Debugging For Fun and Profit

When you have routines that return OSErrs, finish them with the following bit of code:

 
ReportError ( err );
return err;
}

which is defined as:

#ifdef qDEBUG
#define ReportError(err) do { if (err != noErr ) DebugStr ( “
\pError” ); } while (false)
#else
#define ReportError(err)  /* nothing */
#endif

With this macro, you can tell every time that one of your routines returns an error, and it’s easy to follow your error handling code.

- Marshall Clow
Aladdin Systems

What’s My Modifier?

To quickly get the status of modifier keys, use these simple lines:

typedef struct kbd_bits {
 int command : 1;
 int : 5;
 int space : 1;
 int tab : 1;
 int : 4;
 control : 1;
 option : 1;
 capslock : 1;
 shift : 1;
} kbd_bits;

#define KeyModifiers (*(kbd_bits *)0x17A)

Then you can say simply:

if (KeyModifiers.control) {
 Debugger(); // drop into a debugger
}

This works across all Macs, including foreign versions and keyboard maps. For maximum compatibility with a minimal speed hit, call GetOSEvent with a null event mask and examine the modifiers field of the event returned.

- Jorg Brown
The Mac Group

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

OmniOutliner Pro 5.8.5 - Pro version of...
OmniOutliner Pro is a flexible program for creating, collecting, and organizing information. Give your creativity a kick start by using an application that's actually designed to help you think. It's... Read more
OmniOutliner Essentials 5.8.5 - Organize...
OmniOutliner Essentials (was OmniOutliner) is a flexible program for creating, collecting, and organizing information. Give your creativity a kick start by using an application that's actually... Read more
Quicken 6.3.0 - Complete personal financ...
Quicken makes managing your money easier than ever. Whether paying bills, upgrading from Windows, enjoying more reliable downloads, or getting expert product help, Quicken's new and improved features... Read more
Viber 15.8.0 - Send messages and make fr...
Viber lets you send free messages and make free calls to other Viber users, on any device and network, in any country! Viber syncs your contacts, messages and call history with your mobile device, so... Read more
Butler 4.4.2 - Hot key, menu, and keywor...
Butler makes it easier for you to perform a wide variety of potentially recurring tasks. Just arrange these tasks in Butler's fully customizable configuration and assign one or more triggers to a... Read more
GIMP 2.10.24 - Powerful, free image edit...
GIMP is a multi-platform photo manipulation tool. GIMP is an acronym for GNU Image Manipulation Program. The GIMP is suitable for a variety of image manipulation tasks, including photo retouching,... Read more
ScreenFlow 10.0.3 - Create screen record...
ScreenFlow is powerful, easy-to-use screencasting software for the Mac. With ScreenFlow you can record the contents of your entire monitor while also capturing your video camera, microphone and your... Read more
Notability 10.4.5 - Note-taking and anno...
Notability is a powerful note-taker to annotate documents, sketch ideas, record lectures, take notes and more. It combines, typing, handwriting, audio recording, and photos so you can create notes... Read more
Day One 6.7 - Maintain a daily journal.
Day One is an easy, great-looking way to use a journal / diary / text-logging application. Day One is well designed and extremely focused to encourage you to write more through quick Menu Bar entry,... Read more
Vallum 4.0.3 - $15.00
Vallum is a little tool that helps you monitor and block apps connections and throttle apps bandwidth. It is able to intercept connections at the application layer, and hold them while you decide... Read more

Latest Forum Discussions

See All

The 5 Best Mobile Stealth Action Games
Action games are a hard sell on mobile, and they get even harder if the more precision they require. Stealth games are one such subgenre that just doesn’t feel like it could work well on small touchscreens where you’re prone to being distracted or... | Read more »
Exos Heroes' latest update introduc...
LINE Games has announced that several pieces of content in their popular RPG, Exos Heroes, have received changes to celebrate the summer season. There is also a new story event to tackle called Memorial Saga that follows Ramge, the Prince of North... | Read more »
Infinity Island is a cutesy idle game fr...
Infinity Island is a brand new idle game from Luca Redwood that is available now for iOS and Android. You might be familiar with Redwood from their previous games, 10000000, You Must Build A Boat and Photographs. [Read more] | Read more »
Infinite Galaxy is a deep sci-fi strateg...
The collapse of the Empire is nigh. In its wake, remnants of the epic intergalactic struggle float through the debris in space, as lawless pirates sow seeds of discord and loyalist groups strike terror into the hearts of innocent civilians. In the... | Read more »
Injustice 2 Mobile's latest update...
Warner Bros Games and NetherRealm Studios have released a major update for their fighting game, Injustice Mobile 2. It sees the arrival of a brand new character, Vixen, to the game alongside changes to the existing progression system. [Read more] | Read more »
Pokemon Go's August events have bee...
Following Pokemon Go Fest 2021, it's time to look ahead to August and the events that will take place in Niantic's AR game throughout the month. There's a new Research Breakthrough encounter, 1 PokeCoin bundles and a bunch more. [Read more] | Read more »
Overboard!, Inkle's reverse whodunn...
Inkle's fresh approach on the whodunnit mystery genre, Overboard! is now available for Android devices followings its release on iOS. The game has received predominately positive reviews since it launched. It holds a healthy Metacritic score... | Read more »
There's never been a better time to...
We were obviously big fans of Genshin Impact when it launched last year, so much so that it grabbed our Game of the Year award. Since that time, though, the game (and our enthusiasm fo it) had gone somewhat quiet. [Read more] | Read more »
Homeworld Mobile's first regional b...
Since the initial announcement all the way back in 2019, we've not heard an awful lot about Homeworld Mobile. But now, there appears to be some movement as the game's first regional beta test is now live. [Read more] | Read more »
Masketeers: Idle Has Fallen's impen...
Appxplore has announced that their popular RPG Masketeers: Idle Has Fallen will soon receive a major update that introduces a Guild system alongside another feature called Sigils. The developers hope this will add more excitement to the game by... | Read more »

Price Scanner via MacPrices.net

Verizon offers $200 discount on new Apple M1...
Verizon will take up to $200 off the price of an M1-powered Cellular iPad Pro with select trade-in and monthly payment plan (24 months). The fine print: “Less $100 promo credit applied to account... Read more
Record low prices on Apple’s 13″ M1 MacBook A...
Amazon is offering a $150 discount on Apple’s 13″ M1 MacBook Airs with 7-Core GPUs and 8-Core CPU. With Amazon’s discount, their price drops to only $849 with free shipping. Their prices are the... Read more
Save up to $140 on an M1 Mac mini at Apple wi...
Apple has a full line of standard configuration M1 Mac minis available in their Certified Refurbished section starting at only $589 and up to $140 off MSRP. Each mini comes with Apple’s one-year... Read more
Here are the details of Apple’s sales tax hol...
Apple is participating in the 2021 sales tax holiday again this year. In certain states on certain days customers are eligible to save on the sales tax for items purchased on Apple’s online store.... Read more
Apple has 13″ M1 MacBook Pros available for $...
Apple has a full line of 2020 13″ M1 MacBook Pros available Certified Refurbished, starting at only $1099 and up to $230 off original MSRP. These are the cheapest M1 MacBook Pros for sale today at... Read more
Our exclusive Apple Price Trackers help you f...
Our Apple award-winning price trackers are the best place to look for the lowest prices and latest sales on all the latest Apple gear. Scan our price trackers for the latest information on sales,... Read more
The best deal on 13″ M1 MacBook Airs are thes...
Apple has a full line of 2020 13″ M1 MacBook Airs available, Certified Refurbished, starting at only $849 and up to $190 off original MSRP. These are the cheapest M1 MacBook Airs for sale today at... Read more
Reminder: Take advantage of Apple’s Back to S...
Take advantage of Apple’s Back to School promotion for 2021. As part of this promotion, Apple will include one free pair AirPods (with charging case) with the purchase of a MacBook Air, MacBook Pro,... Read more
Sunday Sale: Amazon is offering record-low pr...
Amazon has Apple’s entire MacBook lineup on sale today for record low prices, with models available starting at $899 and up to $500 off Apple’s MSRP. Shipping is free. These are the same MacBook Pros... Read more
Sunday Sale: Apple Pencil 2 for only $99, sav...
Amazon has the Apple Pencil 2 on sale today for only $99 shipped. Their price is $30 off Apple’s MSRP, and it’s the lowest price available for an Apple Pencil 2 anywhere. For the latest prices and... Read more

Jobs Board

*Apple* Support Specialist - Robert Half Tec...
…organization in Lawrenceville, New Jersey is in need of a highly experienced Apple Support Specialist! The Apple Support Specialist will be responsible for Read more
Geek Squad *Apple* Consultation Professiona...
**818649BR** **Job Title:** Geek Squad Apple Consultation Professional **Job Category:** Store Associates **Store Number or Department:** 001045-Mountain View-Store Read more
Head of *Apple* Product Development - DISH...
…the potential to power a connected world. What you'll be doing As the Apple Product Development lead, you will make strong contributions to the product and feature Read more
Medical Assistant (CMA, RMA, LPN) - *Apple*...
…Health Fairview has an immediate opening for a Medical Assistant/LPN at the M Health Fairview Apple Valley Clinic located in Apple Valley, MN. This is a 1.0 FTE Read more
Geek Squad *Apple* Consultation Professiona...
**818139BR** **Job Title:** Geek Squad Apple Consultation Professional **Job Category:** Store Associates **Store Number or Department:** 000535-Portsmouth-Store Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.