[alt.sources] oneko dumps core!

michel@es.ele.tue.nl (Michel Berkelaar) (03/05/91)

The oneko version I took from alt.sources dumps core on Apollo workstations
and an Alliant FX/8 computer in our group, whether compiled with cc or gcc.
It looks as if it can only work with compilers which allow NULL pointer
dereferencing ... Or else something is going wrong completely.

Here is the traceback:

Program        /users/michel/src/oneko/oneko
Status         00040004: reference to illegal address (OS/MST manager)
In routine     "DrawNeko" line 584
Called from    "NekoThinkDraw" line 834
Called from    "ProcessNeko" line 1046
Called from    "main" line 1221
Called from    "unix_$main" line 114
Called from    "_start" line 51

Any comments anybody?

--
-------------------------------------------------------------------------------
Michel Berkelaar                   | Email: michel@ele.tue.nl
Eindhoven University of Technology |
Dept. of Electrical Engineering    |
Design Automation Section          |
P.O. Box 513                       | Phone: ... - 31 - 40 - 473345
NL-5600 MB Eindhoven               | Fax:   ... - 31 - 40 - 448375
The Netherlands                    |
-------------------------------------------------------------------------------

mzw_t@hpujsda.HP.COM (Matsuzawa Takashi) (03/07/91)

Hope this helps...

####
From mzw_t Mon Mar  4 13:19:03 1991
Relay-Version: version Notes 2.8.4  1990/05/09; site hpujsda.HP.COM
From: mzw_t@hpujsda.HP.COM (Matsuzawa Takashi)
Date: Mon, 4 Mar 1991 04:19:03 GMT
Date-Received: Mon, 4 Mar 1991 04:19:03 GMT
Subject: Re: New Oneko w/ larger kitties!!
Message-ID: <330002@hpujsda.HP.COM>
Organization: YHP Japan Country Products - Tokyo
Path: hpujsda!mzw_t
Newsgroups: hp.sources
Posting-Version: version Notes 2.8.4  1990/05/09; site hpujsda.HP.COM
References: <103320033@hpcvlx.cv.hp.com>

Hi,

In order to compile Oneko in ANSI C compatible mode,
you will have to apply following patch to oneko.c file.
I compiled it under Domain/C 6.8 sometime ago and it
is working well.  I believe GCC will do with this patch
(I have not tried it yet, though).

Takashi Matsuzawa,
Japan CPO.

------------- < cut here > -----------
190,225c190,225
<     { &Mati2GC, &Mati2Msk },
<     { &Mati2GC, &Mati2Msk },		/* NekoState == NEKO_STOP */
<     { &Jare2GC, &Jare2Msk },
<     { &Mati2GC, &Mati2Msk },		/* NekoState == NEKO_JARE */
<     { &Kaki1GC, &Kaki1Msk },
<     { &Kaki2GC, &Kaki2Msk },		/* NekoState == NEKO_KAKI */
<     { &Mati3GC, &Mati3Msk },
<     { &Mati3GC, &Mati3Msk },		/* NekoState == NEKO_AKUBI */
<     { &Sleep1GC, &Sleep1Msk },
<     { &Sleep2GC, &Sleep2Msk },		/* NekoState == NEKO_SLEEP */
<     { &AwakeGC, &AwakeMsk },
<     { &AwakeGC, &AwakeMsk },		/* NekoState == NEKO_AWAKE */
<     { &Up1GC, &Up1Msk },
<     { &Up2GC, &Up2Msk },		/* NekoState == NEKO_U_MOVE */
<     { &Down1GC, &Down1Msk },
<     { &Down2GC, &Down2Msk },		/* NekoState == NEKO_D_MOVE */
<     { &Left1GC, &Left1Msk },
<     { &Left2GC, &Left2Msk },		/* NekoState == NEKO_L_MOVE */
<     { &Right1GC, &Right1Msk },
<     { &Right2GC, &Right2Msk },		/* NekoState == NEKO_R_MOVE */
<     { &UpLeft1GC, &UpLeft1Msk },
<     { &UpLeft2GC, &UpLeft2Msk },	/* NekoState == NEKO_UL_MOVE */
<     { &UpRight1GC, &UpRight1Msk },
<     { &UpRight2GC, &UpRight2Msk },	/* NekoState == NEKO_UR_MOVE */
<     { &DownLeft1GC, &DownLeft1Msk },
<     { &DownLeft2GC, &DownLeft2Msk },	/* NekoState == NEKO_DL_MOVE */
<     { &DownRight1GC, &DownRight1Msk },
<     { &DownRight2GC, &DownRight2Msk },	/* NekoState == NEKO_DR_MOVE */
<     { &UpTogi1GC, &UpTogi1Msk },
<     { &UpTogi2GC, &UpTogi2Msk },	/* NekoState == NEKO_U_TOGI */
<     { &DownTogi1GC, &DownTogi1Msk },
<     { &DownTogi2GC, &DownTogi2Msk },	/* NekoState == NEKO_D_TOGI */
<     { &LeftTogi1GC, &LeftTogi1Msk },
<     { &LeftTogi2GC, &LeftTogi2Msk },	/* NekoState == NEKO_L_TOGI */
<     { &RightTogi1GC, &RightTogi1Msk },
<     { &RightTogi2GC, &RightTogi2Msk },	/* NekoState == NEKO_R_TOGI */
---
>    {{ &Mati2GC, &Mati2Msk },
>     { &Mati2GC, &Mati2Msk }},		/* NekoState == NEKO_STOP */
>    {{ &Jare2GC, &Jare2Msk },
>     { &Mati2GC, &Mati2Msk }},		/* NekoState == NEKO_JARE */
>    {{ &Kaki1GC, &Kaki1Msk },
>     { &Kaki2GC, &Kaki2Msk }},		/* NekoState == NEKO_KAKI */
>    {{ &Mati3GC, &Mati3Msk },
>     { &Mati3GC, &Mati3Msk }},		/* NekoState == NEKO_AKUBI */
>    {{ &Sleep1GC, &Sleep1Msk },
>     { &Sleep2GC, &Sleep2Msk }},		/* NekoState == NEKO_SLEEP */
>    {{ &AwakeGC, &AwakeMsk },
>     { &AwakeGC, &AwakeMsk }},		/* NekoState == NEKO_AWAKE */
>    {{ &Up1GC, &Up1Msk },
>     { &Up2GC, &Up2Msk }},		/* NekoState == NEKO_U_MOVE */
>    {{ &Down1GC, &Down1Msk },
>     { &Down2GC, &Down2Msk }},		/* NekoState == NEKO_D_MOVE */
>    {{ &Left1GC, &Left1Msk },
>     { &Left2GC, &Left2Msk }},		/* NekoState == NEKO_L_MOVE */
>    {{ &Right1GC, &Right1Msk },
>     { &Right2GC, &Right2Msk }},		/* NekoState == NEKO_R_MOVE */
>    {{ &UpLeft1GC, &UpLeft1Msk },
>     { &UpLeft2GC, &UpLeft2Msk }},	/* NekoState == NEKO_UL_MOVE */
>    {{ &UpRight1GC, &UpRight1Msk },
>     { &UpRight2GC, &UpRight2Msk }},	/* NekoState == NEKO_UR_MOVE */
>    {{ &DownLeft1GC, &DownLeft1Msk },
>     { &DownLeft2GC, &DownLeft2Msk }},	/* NekoState == NEKO_DL_MOVE */
>    {{ &DownRight1GC, &DownRight1Msk },
>     { &DownRight2GC, &DownRight2Msk }},	/* NekoState == NEKO_DR_MOVE */
>    {{ &UpTogi1GC, &UpTogi1Msk },
>     { &UpTogi2GC, &UpTogi2Msk }},	/* NekoState == NEKO_U_TOGI */
>    {{ &DownTogi1GC, &DownTogi1Msk },
>     { &DownTogi2GC, &DownTogi2Msk }},	/* NekoState == NEKO_D_TOGI */
>    {{ &LeftTogi1GC, &LeftTogi1Msk },
>     { &LeftTogi2GC, &LeftTogi2Msk }},	/* NekoState == NEKO_L_TOGI */
>    {{ &RightTogi1GC, &RightTogi1Msk },
>     { &RightTogi2GC, &RightTogi2Msk }},	/* NekoState == NEKO_R_TOGI */

nazgul@alphalpha.com (Kee Hinckley) (03/07/91)

In article <MICHEL.91Mar5164822@eutes3.es.ele.tue.nl> michel@es.ele.tue.nl (Michel Berkelaar) writes:
>
>The oneko version I took from alt.sources dumps core on Apollo workstations
>and an Alliant FX/8 computer in our group, whether compiled with cc or gcc.
>It looks as if it can only work with compilers which allow NULL pointer
>dereferencing ... Or else something is going wrong completely.

The declaration

Animation	AnimationPattern[][2] =

looks bogus to me.  Although I'm not sure why the compiler didn't
complain.  If you put in actual lengths there you'll get a complaint
because the bracketed structures ought to be double bracketed in pairs
for each subarray.

I changed it to 

Animation	AnimationPattern[] =

Then change the references to:

    if (NekoState != NEKO_SLEEP) {
	DrawNeko(NekoX, NekoY,
		AnimationPattern[(NekoTickCount & 0x1) + NekoState*2]);
    } else {
	DrawNeko(NekoX, NekoY,
		AnimationPattern[((NekoTickCount >> 2) & 0x1) + NekoState*2]);


Now, can anyone figure out a way to get the cat to show up without
a white box around her, or does that require the SHAPE extension?

-- 
Alfalfa Software, Inc.          |       Poste:  The EMail for Unix
nazgul@alfalfa.com              |       Send Anything... Anywhere
617/646-7703 (voice/fax)        |       info@alfalfa.com

I'm not sure which upsets me more: that people are so unwilling to accept
responsibility for their own actions, or that they are so eager to regulate
everyone else's.