Crash! 
Author Message
 Crash!

My program that is supposed to receive input in the form of
112.43 and output "One hundred and Twelve dollars and
Forty-Three Cents" crashes. Any help would be appreciated?

(This is NOT homework. It is a challenging exercise in the
book "C - How to program 3rd Ed. (Deitel & Deitel) p.349
exercise 8.38).

Code follows:
#include <stdio.h>
#include <string.h>

#define BUFFER 10

char *GetWord(char c)
{
char *ret;

switch(c)
{
  case '0':ret = "zero";break;
  case '1':ret = "one";break;
  case '2':ret = "two";break;
  case '3':ret = "three";break;
  case '4':ret = "four";break;
  case '5':ret = "five";break;
  case '6':ret = "six";break;
  case '7':ret = "seven";break;
  case '8':ret = "eight";break;
  case '9':ret = "nine";break;

Quote:
};
return ret;
}

char *GetUnit(int now, int total)
{
char *ret;
switch(total)
{
  case 0:

  break;
  case 1:

  break;
  case 2:

  break;
  case 7:
  if(now==0)ret = "thousand";
  if(now==1)ret = "hundred";
  if(now==2)ret = "tens";
      if(now==3)ret = "ones";
  break;

Quote:
};
return ret;
}

int main()
{
char amount[BUFFER];
int i;
int len;
char *temp;

printf("Enter amount: ");
fflush(stdout);

fgets(amount, strlen(amount), stdin);

len = strlen(amount);

printf("\n%s",amount);
printf("\n%d",len);

for(i=0;i<len;i++)
{
printf("Word: %s\n",GetWord(amount[i]));
printf("Unit: %s\n",GetUnit(i,len));

Quote:
}
return 0;
}



Fri, 09 Jan 2004 18:54:16 GMT  
 Crash!

Quote:

> My program that is supposed to receive input in the form of
> 112.43 and output "One hundred and Twelve dollars and
> Forty-Three Cents" crashes. Any help would be appreciated?

> (This is NOT homework. It is a challenging exercise in the
> book "C - How to program 3rd Ed. (Deitel & Deitel) p.349
> exercise 8.38).

> Code follows:

<snip>

> fgets(amount, strlen(amount), stdin);

Change this to:

fgets(amount, sizeof amount, stdin);

Why? Well, up to this point, amount's value is indeterminate and
meaningless. You have given strlen a task equivalent to determining what
leverage bananas sound like. Nonsense? Exactly so.

And anyway, fgets isn't interested in how long the current string is -
it's interested in how many bytes it can use for the string it's about
to give you.

I think this will fix your problem.

Quote:

> len = strlen(amount);

Just a nit - len returns size_t, not int.

Quote:

> printf("\n%s",amount);
> printf("\n%d",len);

Weird. Best to save your \n for the end of your format specifier, where
it actually does something useful.

Anyway, HTH, HAND, CBS.

--

"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton



Fri, 09 Jan 2004 19:59:06 GMT  
 Crash!


Quote:
> My program that is supposed to receive input in the form of
> 112.43 and output "One hundred and Twelve dollars and
> Forty-Three Cents" crashes. Any help would be appreciated?

> (This is NOT homework. It is a challenging exercise in the
> book "C - How to program 3rd Ed. (Deitel & Deitel) p.349
> exercise 8.38).

In addition to what Richard noted:

Quote:

> Code follows:
> #include <stdio.h>
> #include <string.h>

> #define BUFFER 10

> char *GetWord(char c)
> {
> char *ret;

> switch(c)
> {
>   case '0':ret = "zero";break;
>   case '1':ret = "one";break;
>   case '2':ret = "two";break;
>   case '3':ret = "three";break;
>   case '4':ret = "four";break;
>   case '5':ret = "five";break;
>   case '6':ret = "six";break;
>   case '7':ret = "seven";break;
>   case '8':ret = "eight";break;
>   case '9':ret = "nine";break;
> };
> return ret;

If c is not a digit, ret is an uninitialized value, which causes Undefined
Behavior (and plausibly, a crash) if it is later dereferenced by the caller.
If the user enters "112.43", c=='.' on the fourth call.  You need to either
make sure that GetWord is called only if isdigit(c) is nonzero, or that it
always returns a sensible pointer.

- Show quoted text -

Quote:
> }

> char *GetUnit(int now, int total)
> {
> char *ret;
> switch(total)
> {
>   case 0:

>   break;
>   case 1:

>   break;
>   case 2:

>   break;
>   case 7:
>   if(now==0)ret = "thousand";
>   if(now==1)ret = "hundred";
>   if(now==2)ret = "tens";
>       if(now==3)ret = "ones";
>   break;

> };
> return ret;
> }

> int main()
> {
> char amount[BUFFER];
> int i;
> int len;
> char *temp;

> printf("Enter amount: ");
> fflush(stdout);

> fgets(amount, strlen(amount), stdin);

> len = strlen(amount);

> printf("\n%s",amount);
> printf("\n%d",len);

> for(i=0;i<len;i++)
> {
> printf("Word: %s\n",GetWord(amount[i]));
> printf("Unit: %s\n",GetUnit(i,len));

> }
> return 0;
> }



Fri, 09 Jan 2004 19:55:46 GMT  
 Crash!
What is HAND & CBS?


Quote:

>> My program that is supposed to receive input in the form of
>> 112.43 and output "One hundred and Twelve dollars and
>> Forty-Three Cents" crashes. Any help would be appreciated?

>> (This is NOT homework. It is a challenging exercise in the
>> book "C - How to program 3rd Ed. (Deitel & Deitel) p.349
>> exercise 8.38).

>> Code follows:

><snip>

>> fgets(amount, strlen(amount), stdin);

>Change this to:

>fgets(amount, sizeof amount, stdin);

>Why? Well, up to this point, amount's value is indeterminate and
>meaningless. You have given strlen a task equivalent to determining what
>leverage bananas sound like. Nonsense? Exactly so.

>And anyway, fgets isn't interested in how long the current string is -
>it's interested in how many bytes it can use for the string it's about
>to give you.

>I think this will fix your problem.

>> len = strlen(amount);

>Just a nit - len returns size_t, not int.

>> printf("\n%s",amount);
>> printf("\n%d",len);

>Weird. Best to save your \n for the end of your format specifier, where
>it actually does something useful.

>Anyway, HTH, HAND, CBS.

>--

>"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
>C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
>K&R answers, C books, etc: http://users.powernet.co.uk/eton



Fri, 09 Jan 2004 20:14:21 GMT  
 Crash!

Quote:
> What is HAND & CBS?

HAND is Have A Nice Day. CBS is an American TV station. Erm, wait a
minute...

--

| Kingpriest of "The Flying Lemon Tree" G++ FR FW+ M- #108 D+ ADA N+++|
| http://www.helsinki.fi/~palaste       W++ B OP+                     |
\----------------------------------------- Finland rules! ------------/

"To know me IS to love me."
   - JIPsoft



Fri, 09 Jan 2004 20:51:21 GMT  
 Crash!

Quote:

> My program that is supposed to receive input in the form of
> 112.43 and output "One hundred and Twelve dollars and
> Forty-Three Cents" crashes. Any help would be appreciated?

> (This is NOT homework. It is a challenging exercise in the
> book "C - How to program 3rd Ed. (Deitel & Deitel) p.349
> exercise 8.38).

> Code follows:
> #include <stdio.h>
> #include <string.h>

> #define BUFFER 10

> char *GetWord(char c)
> {
> char *ret;

> switch(c)
> {
>   case '0':ret = "zero";break;
>   case '1':ret = "one";break;
>   case '2':ret = "two";break;
>   case '3':ret = "three";break;
>   case '4':ret = "four";break;
>   case '5':ret = "five";break;
>   case '6':ret = "six";break;
>   case '7':ret = "seven";break;
>   case '8':ret = "eight";break;
>   case '9':ret = "nine";break;
> };
> return ret;
> }

Notice that nowhere in the above function did you allocate space for
the array of characters "zero", "one", etc to FIT into char *ret.

You need to use malloc (if you've covered that in your book yet) or
set ret to be something like:
char ret[256]

then return the address of ret;

return &ret;

- Show quoted text -

Quote:

> char *GetUnit(int now, int total)
> {
> char *ret;
> switch(total)
> {
>   case 0:

>   break;
>   case 1:

>   break;
>   case 2:

>   break;
>   case 7:
>   if(now==0)ret = "thousand";
>   if(now==1)ret = "hundred";
>   if(now==2)ret = "tens";
>       if(now==3)ret = "ones";
>   break;

> };
> return ret;
> }

GetUnit has the same problem with no memory allocated. Also since
nothing happens in cases 0,1,2 a null would be returned, or some
random junk that ret has been initalized to.

- Show quoted text -

Quote:

> int main()
> {
> char amount[BUFFER];
> int i;
> int len;
> char *temp;

> printf("Enter amount: ");
> fflush(stdout);

> fgets(amount, strlen(amount), stdin);

> len = strlen(amount);

> printf("\n%s",amount);

Gererally I would expect the \n at the end. It means the "5" don't get
smashed into the next line with "Word".

Quote:
> printf("\n%d",len);

> for(i=0;i<len;i++)
> {
> printf("Word: %s\n",GetWord(amount[i]));
> printf("Unit: %s\n",GetUnit(i,len));

> }
> return 0;
> }

--
Rick Dearman
Group IT Development Manager
Affinity Internet Holdings

Mobile: 07765 233 269


Fri, 09 Jan 2004 21:03:50 GMT  
 Crash!



[....]

Quote:
> > Code follows:
> > #include <stdio.h>
> > #include <string.h>

> > #define BUFFER 10

> > char *GetWord(char c)
> > {
> > char *ret;

> > switch(c)
> > {
> >   case '0':ret = "zero";break;
> >   case '1':ret = "one";break;
> >   case '2':ret = "two";break;
> >   case '3':ret = "three";break;
> >   case '4':ret = "four";break;
> >   case '5':ret = "five";break;
> >   case '6':ret = "six";break;
> >   case '7':ret = "seven";break;
> >   case '8':ret = "eight";break;
> >   case '9':ret = "nine";break;
> > };
> > return ret;
> > }

> Notice that nowhere in the above function did you allocate space
for
> the array of characters "zero", "one", etc to FIT into char *ret.

> You need to use malloc (if you've covered that in your book yet)
or
> set ret to be something like:
> char ret[256]

No, no, no!!
"Zero", "One" and so on are string literals, and their adresses are
assigned to ret. That is perfectly OK.
Your suggestion:
char ret[256];
strcpy(ret, "Zero");
return ret;
Invokes undefined behavior, because the array is gone as soon as the
function returns and the returned pointer points into the middle of
nowhere.

Quote:

> then return the address of ret;

> return &ret;

..Ooouuuch

[....]

-- .
Robert Stankowic



Fri, 09 Jan 2004 21:40:58 GMT  
 Crash!

<...>

Quote:
>> char *GetWord(char c)
>> {
>> char *ret;

>> switch(c)
>> {
>>   case '0':ret = "zero";break;
>>   case '1':ret = "one";break;
>>   case '2':ret = "two";break;
>>   case '3':ret = "three";break;
>>   case '4':ret = "four";break;
>>   case '5':ret = "five";break;
>>   case '6':ret = "six";break;
>>   case '7':ret = "seven";break;
>>   case '8':ret = "eight";break;
>>   case '9':ret = "nine";break;
>> };
>> return ret;
>> }
> Notice that nowhere in the above function did you allocate space for
> the array of characters "zero", "one", etc to FIT into char *ret.

Huh? Those are string literals, they have static duration and it's
correct to assign them to a char pointer and to return them from a
function.

Quote:
> You need to use malloc (if you've covered that in your book yet) or
> set ret to be something like:
> char ret[256]
> then return the address of ret;
> return &ret;

You must not return a pointer to an automatic variable whose lifetime
just ended.

--
Stefan Farfeleder



Fri, 09 Jan 2004 21:50:47 GMT  
 Crash!

Quote:


> > My program that is supposed to receive input in the form of
> > 112.43 and output "One hundred and Twelve dollars and
> > Forty-Three Cents" crashes. Any help would be appreciated?

> > (This is NOT homework. It is a challenging exercise in the
> > book "C - How to program 3rd Ed. (Deitel & Deitel) p.349
> > exercise 8.38).

> > Code follows:
> > #include <stdio.h>
> > #include <string.h>

> > #define BUFFER 10

> > char *GetWord(char c)
> > {
> > char *ret;

> > switch(c)
> > {
> >   case '0':ret = "zero";break;
> >   case '1':ret = "one";break;
> >   case '2':ret = "two";break;
> >   case '3':ret = "three";break;
> >   case '4':ret = "four";break;
> >   case '5':ret = "five";break;
> >   case '6':ret = "six";break;
> >   case '7':ret = "seven";break;
> >   case '8':ret = "eight";break;
> >   case '9':ret = "nine";break;
> > };
> > return ret;
> > }

> Notice that nowhere in the above function did you allocate space for
> the array of characters "zero", "one", etc to FIT into char *ret.

Not true at all. For example, in:

   char * p = "some literal string";

`p' is assignd the address of `"some literal string"' which of static
duration (and likely immutable).

- Show quoted text -

Quote:

> You need to use malloc (if you've covered that in your book yet) or
> set ret to be something like:
> char ret[256]

> then return the address of ret;

> return &ret;

> > char *GetUnit(int now, int total)
> > {
> > char *ret;
> > switch(total)
> > {
> >   case 0:

> >   break;
> >   case 1:

> >   break;
> >   case 2:

> >   break;
> >   case 7:
> >   if(now==0)ret = "thousand";
> >   if(now==1)ret = "hundred";
> >   if(now==2)ret = "tens";
> >       if(now==3)ret = "ones";
> >   break;

> > };
> > return ret;
> > }

> GetUnit has the same problem with no memory allocated. Also since
> nothing happens in cases 0,1,2 a null would be returned, or some
> random junk that ret has been initalized to.

Nope. See above.

- Show quoted text -

Quote:

> > int main()
> > {
> > char amount[BUFFER];
> > int i;
> > int len;
> > char *temp;

> > printf("Enter amount: ");
> > fflush(stdout);

> > fgets(amount, strlen(amount), stdin);

> > len = strlen(amount);

> > printf("\n%s",amount);
> Gererally I would expect the \n at the end. It means the "5" don't get
> smashed into the next line with "Word".
> > printf("\n%d",len);

> > for(i=0;i<len;i++)
> > {
> > printf("Word: %s\n",GetWord(amount[i]));
> > printf("Unit: %s\n",GetUnit(i,len));

> > }
> > return 0;
> > }

> --
> Rick Dearman
> Group IT Development Manager

Hmmmm... (couldn't resist ;-))

Quote:
> Affinity Internet Holdings

> Mobile: 07765 233 269

HTH,
--ag

--
Artie Gold, Austin, TX  (finger the cs.utexas.edu account for more info)

--
Sometimes I wonder, but sometimes I'm sure.



Fri, 09 Jan 2004 21:51:12 GMT  
 Crash!
This is from Snippets. I have messed with it a bit.  It uses US units, so
you might have a bit of a sticky wicket if you use it in (for instance) the
UK.  Also, you are only secure to use up to ten significant decimal digits
in ANSI C.

/* +++Date last modified: 02-Nov-1995 */

/*
**  FMTMONEY.C - Format a U.S. dollar value into a numeric string
**
**  public domain demo by Bob Stout
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>

#define Form(s,a) bufptr += sprintf(bufptr, s, a)

static char     buf[1024],
               *bufptr;

static const char *units[] = {
    "Zero", "One", "Two", "Three", "Four",
    "Five", "Six", "Seven", "Eight", "Nine",
    "Ten", "Eleven", "Twelve", "Thir{*filter*}", "Four{*filter*}",
    "Fif{*filter*}", "Six{*filter*}", "Seven{*filter*}", "Eigh{*filter*}", "Nine{*filter*}"

Quote:
};

static const char *tens[] = {
    "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty",
"Ninety"

Quote:
};

typedef struct tag_DigitGroups {
    long double     dpower;
    char           *pszName;

Quote:
}               DigitGroups;

static const DigitGroups PowersOfOneThousand[] = {
    {1e00, ""},
    {1e03, "Thousand"},
    {1e06, "Million"},
    {1e09, "Billion"},
    {1e12, "Trillion"},
    {1e15, "Quadrillion"},
    {1e18, "Quintillion"},
    {1e21, "Sextillion"},
    {1e24, "Septillion"},
    {1e27, "Octillion"},
    {1e30, "Nonillion"},
    {1e33, "Decillion"},
    {1e36, "Undecillion"},
    {1e39, "Duodecillion"},
    {1e42, "Tredecillion"},
    {1e45, "Quattuordecillion"},
    {1e48, "Quindecillion"},
    {1e51, "Sexdecillion"},
    {1e54, "Septendecillion"},
    {1e57, "Octodecillion"},
    {1e60, "Novemdecillion"},
    {1e63, "Vigintillion"}

Quote:
};

static void     form_group(int, char *);

/*
**  Call with long double amount
**  Rounds cents
**  Returns string in a static buffer
*/

char           *fmt_money(long double amt)
{
    int             temp;
    int             i;
    int             topgroup;
    long double     dummy;
    long double     cents = modfl(amt, &dummy);
    long double     powerof10;

    *buf = '\0';
    bufptr = buf;
    if (amt < 0) {
        amt = -amt;
        *bufptr = '-';
        bufptr++;
        *bufptr = 0;
    }
    powerof10 = log10l(amt);
    topgroup = ((int) powerof10) / 3;
    if (topgroup > 21) {
        puts("Error!  Unable to process numbers that large.\n");
        exit(EXIT_FAILURE);
    }
    if (powerof10 > LDBL_DIG) {
        puts("Warning!  Loss of accuracy in calculation.\n");
    }
    for (i = topgroup; i > 0; i--) {
        temp = (int) (amt / PowersOfOneThousand[i].dpower);
        if (temp) {
            form_group(temp, PowersOfOneThousand[i].pszName);
            amt = fmodl(amt, PowersOfOneThousand[i].dpower);
        }
    }
    form_group((int) amt, "");

    if (buf == bufptr)
        Form("%s ", units[0]);

    temp = (int) (cents * 100. + .5);
    sprintf(bufptr, "& %02d/100", temp);

    return buf;

Quote:
}

/*
**  Process each thousands group
*/

static void     form_group(int amt, char *scale)
{
    if (buf != bufptr)
        *bufptr++ = ' ';

    if (100 <= amt) {
        Form("%s Hundred ", units[amt / 100]);
        amt %= 100;
    }
    if (20 <= amt) {
        Form("%s", tens[(amt - 20) / 10]);
        if (0 != (amt %= 10)) {
            Form("-%s ", units[amt]);
        } else
            Form("%s", " ");
    } else if (amt) {
        Form("%s ", units[amt]);
    }
    Form("%s", scale);

Quote:
}

#ifdef TEST

main(int argc, char *argv[])
{
    while (--argc) {
        long double     amt = atof(*(++argv));
        printf("fmt_money(%Lg) = %s\n", amt, fmt_money(amt));
    }
    return EXIT_SUCCESS;

Quote:
}

#endif          /* TEST */
--
C-FAQ: http://www.*-*-*.com/ ~scs/C-faq/top.html
 "The C-FAQ Book" ISBN 0-201-84519-9
C.A.P. FAQ: ftp://cap.connx.com/pub/Chess%20Analysis%20Project%20FAQ.htm


Sat, 10 Jan 2004 03:34:04 GMT  
 Crash!
Here's my version of an ordinal number printer for English.  (I
have one for Japanese, too, if you'd prefer.)  It's not
specialized for checks but that probably wouldn't be much
trouble.

#include <stdio.h>
#include <stdlib.h>

char *ordinal (char buf[1024], int value);

int
main (int argc, char *argv[])
{
  char buf[1024];

  if (argc != 2)
    {
      printf ("usage: ordinal <number>\n");
      return EXIT_FAILURE;
    }

  ordinal (buf, atoi (argv[1]));
  puts (buf);
  return EXIT_SUCCESS;

Quote:
}

/* Works for positive and negative numbers up to 9 digits long, unless
   you're British. */
char *
ordinal (char buf[1024], int value)
{
  static const char *const powers[]
    = {"thousand", "million", "billion"};

  static const char *const ones[]
    = {"one", "two", "three", "four", "five",
       "six", "seven", "eight", "nine", "ten",
       "eleven", "twelve", "thir{*filter*}", "four{*filter*}", "fif{*filter*}",
       "six{*filter*}", "seven{*filter*}", "eigh{*filter*}", "nine{*filter*}"};

  static const char *const tens[]
    = {"twenty", "thirty", "forty", "fifty",
       "sixty", "seventy", "eighty", "ninety"};

  char *cp = buf;

  if (value < 0)
    {
      cp += sprintf (cp, "negative ");
      value = -value;
    }
  else if (value == 0)
    {
      strcpy (buf, "zero");
      return buf;
    }

  {
    int part_stack[4];
    int *part_ptr = part_stack;

    for (; value; value /= 1000)
      *part_ptr++ = value % 1000;

    while (part_ptr > part_stack)
      {
        int p = *--part_ptr;

        if (p >= 100)
          {
            cp += sprintf (cp, "%s hundred ", ones[p / 100 - 1]);
            p %= 100;
          }

        if (p >= 20)
          {
            if (p % 10)
              cp += sprintf (cp, "%s-%s ", tens[p / 10 - 2], ones[p % 10 - 1]);
            else
              cp += sprintf (cp, "%s ", tens[p / 10 - 2]);
          }
        else if (p > 0)
          cp += sprintf (cp, "%s ", ones[p - 1]);

        if (p && part_ptr > part_stack)
          cp += sprintf (cp, "%s ", powers[part_ptr - part_stack - 1]);
      }
  }

  cp[-1] = 0;
  return buf;

Quote:
}

/*
  Local variables:
  compile-command: "gcc -W -Wall -ansi -pedantic ordinal.c -o ordinal"
  End:
*/


Sat, 10 Jan 2004 04:42:55 GMT  
 Crash!

Quote:

> What is HAND & CBS?

Have A Nice Day. Come Back Soon.

(And I meant it quite genuinely. Your question was topical,
well-presented and well-supported with source code.)

--

"Usenet is a strange place." - Dennis M Ritchie, 29 July 1999.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
K&R answers, C books, etc: http://users.powernet.co.uk/eton



Sat, 10 Jan 2004 04:44:25 GMT  
 Crash!
[...]

Quote:
> /* Works for positive and negative numbers up to 9 digits long, unless
>    you're British. */
[...]
>     = {"thousand", "million", "billion"};

Change the comment to "...unless you are not American".

'bi-' in 'billion', 'tri-' in 'trillion' etc. suggest multiplying '-llion'
by itself the appropriate number of times, e.g.

billion = million * million
trillion = million * million * million
quadrillion = million * million * million * million
etc.

The _civilized_ world seems to have recognized that, but unfortunately it
also seems to be giving in to the brute force :-(

--
Peter "milliard" Pichler



Sat, 10 Jan 2004 05:19:25 GMT  
 Crash!

Quote:

> Here's my version of an ordinal number printer for English.  (I
> have one for Japanese, too, if you'd prefer.)  It's not
> specialized for checks but that probably wouldn't be much
> trouble.

Of course, if we're not talking arabic numbers, then Japanese and
Chinese would be very easy to convert from numbers to words...
especially if the words are also written in kanji...

go man ni sen roppyaku roku juu yon (written in kanji)

translated to....

go man ni sen roppyaku roku juu yon (written in kanji)

:)

--
"Quite frankly, C isn't a good language for idiots and never will be.
Same for Ferraris, for that matter."
                      - Dann Corbit



Sat, 10 Jan 2004 08:09:55 GMT  
 Crash!

Quote:
> "Quite frankly, C isn't a good language for idiots and never will be.
> Same for Ferraris, for that matter."
>                                      - Dann Corbit

Why is C a bad language for Ferraris? ;-o

--ag  

--
Artie Gold, Austin, TX  (finger the cs.utexas.edu account for more info)

--
We miss you, John Lee.



Sat, 10 Jan 2004 08:11:33 GMT  
 
 [ 25 post ]  Go to page: [1] [2]

 Relevant Pages 

1. DOA app crashes with a Kernel Crash on exit

2. Crash, always crashes!

3. Narrowed down plop plop crash crash I think.

4. DOA app crashes with a Kernel Crash on exit

5. Narrowed down plop plop crash crash I think.

6. Project Problems (Crash! Crash! Crash!)

7. THANKS A LOT. No more plop plop crash crash.

8. Plop plop crash crash o how irritating it is.

9. THANKS A LOT. No more plop plop crash crash.

10. Plop plop crash crash o how irritating it is.

11. MFC with managed Extension crashes on win98??

12. systray & explorer crash

 

 
Powered by phpBB® Forum Software