From: "Mars" Sender: "Mars" Reply-To: "Mars" Subject: Re: Crash in class when adding new variables Newsgroups: comp.os.msdos.djgpp References: <35eec1db DOT 0 AT 195 DOT 158 DOT 64 DOT 19> <35f0e017 DOT 37639438 AT news DOT Austria DOT EU DOT net> <35f01ace DOT 0 AT 195 DOT 158 DOT 64 DOT 19> <35fd5f72 DOT 48706033 AT news DOT Austria DOT EU DOT net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-=_news35f165d6" NNTP-Posting-Host: 195.158.64.195 Message-ID: <35f165f6.0@195.158.64.19> Date: 5 Sep 1998 18:25:26 +0100 Lines: 201 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk This is a multi-part message in MIME format. ---=_news35f165d6 Content-Type: text/plain Content-Transfer-Encoding: 7bit sparhawk AT eunet DOT at (Gerhard Gruber) wrote: >Destination: "Mars" >=46rom: Gruber Gerhard >Group: comp.os.msdos.djgpp >Date: 4 Sep 1998 18:52:30 +0100: > >>It was not me. This is another problem. > >Oh. Same subject line different problem. :) > >>This is the signiture of the class: > >Well, the calls is with 99.9% surity (is this the word?) not the problem. >Rather your problem lies somewhere in your code. I'm pretty sure that you >overwrite your stack somewhere and thats why changes in the class might = >crash >your program. Because the stack layout is different with the new class = >and it >happens that the new values crash whereas the previous values went = >unnoticed >(but are still there). So check your code for parts where you use = >automatic >variables (specifically arrays) where you might go beyond array = >boundaries. > >Something like that might cause your problem: > >foo() >{ > char s[5]; > > strcpy(s, "Very long string doesnt fit in this short array"); >} > >Another problem might be that you are shooting with wild pointers. :) Are= > you >sure you initialized all pointers prior to using them? Assigning a = >default >value of NULL often helps in detecting such errors. I'd recommend to do = >this >on all pointers. > >-- >Bye, > Gerhard > >email: sparhawk AT eunet DOT at > g DOT gruber AT sis DOT co DOT at > >Spelling corrections are appreciated. Thanks for your reply. I tried as you said, to make the pointer point to NULL. But it still crashed. I'm attaching the source code so that you can try it. As it is, it is runnable. But when you add another variable to either class GridMap or class GridMap2, the program crashes. To exit program, press 'x'. Thanks again Mars ---=_news35f165d6 Content-Type: text/plain; name="M:\djgpp\work\map2.cpp" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPGFsbGVncm8uaD4NCi8vI2luY2x1ZGUgPG1hcC5oPg0KI2lu Y2x1ZGUgPGtleXMuaD4NCg0KI2luY2x1ZGUgPGlvc3RyZWFtLmg+DQojaW5j bHVkZSA8YWxsZWdyby5oPg0KDQpjbGFzcyBNYXBPYmplY3QNCnsNCiBCSVRN QVAgKnBpY3R1cmU7DQogaW50IHNpemV4Ow0KIGludCBzaXpleTsNCg0KIHB1 YmxpYzoNCiBNYXBPYmplY3QoQklUTUFQICpwaWN0LCBpbnQgc2l6ZV94LCBp bnQgc2l6ZV95KSB7DQogCXBpY3R1cmUgPSBwaWN0Ow0KICAgc2l6ZXggPSBz aXplX3g7DQogICBzaXpleSA9IHNpemVfeTsNCiB9DQogdm9pZCBkcmF3T2Jq ZWN0KEJJVE1BUCogZGVzdCwgaW50IHgsIGludCB5KSB7DQogCWJsaXQocGlj dHVyZSwgZGVzdCwgMCwwLHgseSwgc2l6ZXgsc2l6ZXkpOw0KIH0NCn07DQoN CmNsYXNzIEdyaWRNYXANCnsNCiBNYXBPYmplY3QgKiptYXA7DQogaW50IHNp emV4LCBzaXpleTsJCS8vIGFjdHVhbCBzaXplDQogaW50IHZpc3VhbHgsIHZp c3VhbHk7CS8vIHZpc3VhbCBzaXplIHNob3duIG9uIHNjcmVlbg0KIGludCBz Y3JlZW54LCBzY3JlZW55OwkvLyBwb3NpdGlvbiBvZiBsZWZ0LWhhbmQgY29y bmVyIHdoZXJlIHRvIGJlZ2luDQogCQkJCQkJCQkvLyBkaXNwbGF5aW5nIGdy aWQNCiBCSVRNQVAgKmRpc3BsYXk7CQkJLy8gb3V0cHV0IGJpdG1hcCBnZW5l cmFsbHkgc2NyZWVuDQogaW50IGJveHNpemU7CQkJCS8vIHNpemUgb2YgZWFj aCBtYXAgc3F1YXJlDQogaW50IGNvdW50OwkJCQkJLy8gdXNlZCBmb3IgbW91 c2Ugc2Nyb2xsaW5nDQoNCiBwcm90ZWN0ZWQ6DQogaW50IGN1cngsIGN1cnk7 DQoNCiBwdWJsaWM6DQogR3JpZE1hcChpbnQgc2l6ZV94LCBpbnQgc2l6ZV95 LCBpbnQgdmlzdWFsX3gsIGludCB2aXN1YWxfeSwNCiAgICAgICAgIGludCBz Y3JlZW5feD0wLCBpbnQgc2NyZWVuX3k9MCwgQklUTUFQICpkaXNwPXNjcmVl biwNCiAgICAgICAgIGludCBiZWdpbl94PTAsIGludCBiZWdpbl95PTAsIGlu dCBib3hfc2l6ZT0yMCkNCiB7DQogCWN1cnggPSBiZWdpbl94Ow0KICAgY3Vy eSA9IGJlZ2luX3k7DQogICBzaXpleCA9IHNpemVfeDsNCiAgIHNpemV5ID0g c2l6ZV95Ow0KICAgdmlzdWFseCA9IHZpc3VhbF94Ow0KICAgdmlzdWFseSA9 IHZpc3VhbF95Ow0KICAgc2NyZWVueCA9IHNjcmVlbl94Ow0KICAgc2NyZWVu eSA9IHNjcmVlbl95Ow0KICAgZGlzcGxheSA9IHNjcmVlbjsNCiAgIGJveHNp emUgPSBib3hfc2l6ZTsNCiAgIG1hcCA9IG5ldyAoTWFwT2JqZWN0Kilbc2l6 ZXggKiBzaXpleV07DQogfQ0KDQogfkdyaWRNYXAoKSB7DQogCWZvciAoaW50 IGs9MDsgazxzaXpleCpzaXpleTsgKytrKSB7DQogICAJaWYgKG1hcFtrXSAh PSBOVUxMKSBmcmVlKG1hcFtrXSk7DQogICB9DQogCWZyZWUobWFwKTsNCiB9 DQoNCiB2b2lkIHNldERpc3BsYXkoQklUTUFQICpuZXdfZGlzcGxheSkgew0K IAlkaXNwbGF5ID0gbmV3X2Rpc3BsYXk7DQogfQ0KIHZvaWQgbW92ZU1hcChp bnQgbmV3X3gsIGludCBuZXdfeSkgew0KIAlzY3JlZW54ID0gbmV3X3g7DQog ICBzY3JlZW55ID0gbmV3X3k7DQogfQ0KIHZvaWQgc2V0VmlzdWFsKGludCBu ZXdfeCwgaW50IG5ld195KSB7DQogCXZpc3VhbHggPSBuZXdfeDsNCiAgIHZp c3VhbHkgPSBuZXdfeTsNCiB9DQogTWFwT2JqZWN0JiBnZXQoaW50IHgsIGlu dCB5KSB7DQogCXJldHVybiAqKG1hcFt4Kyh5KnNpemV4KV0pOw0KIH0NCiBN YXBPYmplY3QqIGdldHB0KGludCB4LCBpbnQgeSkgew0KIAlyZXR1cm4gKG1h cFt4Kyh5KnNpemV4KV0pOw0KIH0NCiB2b2lkIGNsZWFyTWFwKE1hcE9iamVj dCAqbW8pIHsNCiAJaWYgKG1vID09IE5VTEwpIHsNCiAJCWZvciAoaW50IGs9 MDsgazxzaXpleCpzaXpleTsgKytrKSB7DQogICAJCWlmIChtYXBba10gIT0g TlVMTCkgZnJlZShtYXBba10pOw0KICAgCX0NCiAgIH0NCiAJZWxzZSB7DQog CQlmb3IgKGludCBrPTA7IGs8c2l6ZXgqc2l6ZXk7ICsraykgew0KICAgCQlp ZiAobWFwW2tdICE9IE5VTEwpIGZyZWUobWFwW2tdKTsNCiAgICAgICAgIG1h cFtrXSA9IG1vOw0KICAgCX0NCiAgIH0NCiB9DQogdm9pZCBzY3JvbGxVcChp bnQgbikgew0KIAlpZiAoKGN1cnktbikgPCAwKSByZXR1cm47DQogICBlbHNl IChjdXJ5IC09IG4pOw0KICAgZHJhd01hcCgpOw0KIH0NCiB2b2lkIHNjcm9s bERvd24oaW50IG4pIHsNCiAJaWYgKChjdXJ5K24pID4gKHNpemV5IC0gdmlz dWFseSAtIDEpKSByZXR1cm47DQogICBlbHNlIChjdXJ5ICs9IG4pOw0KICAg ZHJhd01hcCgpOw0KIH0NCiB2b2lkIHNjcm9sbExlZnQoaW50IG4pIHsNCiAJ aWYgKChjdXJ4LW4pIDwgMCkgcmV0dXJuOw0KICAgZWxzZSBjdXJ4IC09IG47 DQogICBkcmF3TWFwKCk7DQogfQ0KIHZvaWQgc2Nyb2xsUmlnaHQoaW50IG4p IHsNCiAJaWYgKChjdXJ4K24pID4gKHNpemV4IC0gdmlzdWFseCAtIDEpKSBy ZXR1cm47DQogICBlbHNlIGN1cnggKz0gbjsNCiAgIGRyYXdNYXAoKTsNCiB9 DQogdm9pZCBkcmF3R3JpZCgpIHsNCiAJZm9yIChpbnQgaz0wOyBrPD12aXN1 YWx4OyArK2spIHsNCiAgIAlsaW5lKGRpc3BsYXksIHNjcmVlbnggKyAoaypi b3hzaXplKSxzY3JlZW55LHNjcmVlbnggKyhrKmJveHNpemUpLHNjcmVlbnkr KHZpc3VhbHkqYm94c2l6ZSksIDE1KTsNCiAgIH0NCglmb3IgKGludCBrPTA7 IGs8PXZpc3VhbHk7ICsraykgew0KICAgICAgbGluZShkaXNwbGF5LHNjcmVl bngsc2NyZWVueSsoaypib3hzaXplKSxzY3JlZW54Kyh2aXN1YWx4KmJveHNp emUpLHNjcmVlbnkrKGsqYm94c2l6ZSksIDE1KTsNCiAgIH0NCiB9DQogdm9p ZCBkcmF3TWFwKCkgew0KIAlpbnQgayxyOw0KICAgTWFwT2JqZWN0ICpwOw0K ICAgdnN5bmMoKTsNCiAgIHNob3dfbW91c2UoTlVMTCk7DQogICBkcmF3R3Jp ZCgpOw0KICAgY2hhciAqcyA9IG5ldyBjaGFyKDIwKTsNCiAgIHNwcmludGYo cywgIlg6ICVkIixjdXJ4KTsNCiAgIHRleHRvdXQoc2NyZWVuLGZvbnQscyw1 MDAsMTAsMTEpOw0KICAgc3ByaW50ZihzLCAiWTogJWQiLGN1cnkpOw0KICAg dGV4dG91dChzY3JlZW4sZm9udCxzLDUwMCwzMCwxMSk7DQogICBkZWxldGUo cyk7DQogCWZvciAoaz1jdXJ5OyBrPChjdXJ5K3Zpc3VhbHkpOyArK2spDQog ICAgICBmb3IgKHI9Y3VyeDsgcjwoY3VyeCt2aXN1YWx4KTsgKytyKSB7DQog ICAgICAJaWYgKChwID0gKE1hcE9iamVjdCopZ2V0cHQoayxyKSkgPT0gTlVM TCkgY29udGludWU7DQogICAgICAgICBlbHNlIHsNCiAgICAgICAgIAlwLT5k cmF3T2JqZWN0KGRpc3BsYXksIHNjcmVlbngrKChrJXZpc3VhbHgpKmJveHNp emUpKzEsIHNjcmVlbnkrKChyJXZpc3VhbHkpKmJveHNpemUpKzEpOw0KICAg ICAgICAgfQ0KICAgCX0NCiAgIHNob3dfbW91c2Uoc2NyZWVuKTsNCiB9DQog dm9pZCBzY3JvbGxNb3VzZSgpIHsNCiAJaW50IHcgPSAxNTsNCiAJaWYgKCAg KG1vdXNlX3ggPiBzY3JlZW54KSAmJiAobW91c2VfeSA+IHNjcmVlbnkrdykN CiAgICAgICAmJihtb3VzZV94IDwgc2NyZWVueCt3KSAmJiAobW91c2VfeSA8 ICh2aXN1YWx5KmJveHNpemUpLXcpKQ0KICAgew0KLy8gICAgIGlmIChjb3Vu dCAhPSAwKSAtLWNvdW50Ow0KLy8gICAgIGVsc2Ugew0KICAgICAJc2Nyb2xs TGVmdCgxKTsNCiAgICAgCXBhdXNlKCk7DQovLyAgICAgIGNvdW50PTEwMDsN Ci8vICAgICB9DQovLyAgICAgY2VyciA8PCAiU2Nyb2xsIGxlZnRcbiI7DQog ICB9DQogICBpZiAoICAobW91c2VfeCA+ICh2aXN1YWx4KmJveHNpemUpLXcp ICYmIChtb3VzZV95ID4gc2NyZWVueSt3KQ0KICAgICAgICYmKG1vdXNlX3gg PCAodmlzdWFseCpib3hzaXplKSkgJiYgKG1vdXNlX3kgPCAodmlzdWFseSpi b3hzaXplKS13KSkNCiAgIHsNCi8vICAgICBpZiAoY291bnQgIT0gMCkgLS1j b3VudDsNCi8vICAgICBlbHNlIHsNCiAgICAgCXNjcm9sbFJpZ2h0KDEpOw0K ICAgICAJcGF1c2UoKTsNCi8vICAgICAgY291bnQ9MTAwOw0KLy8gICAgIH0N Ci8vICAgICBjZXJyIDw8ICJTY3JvbGwgUmlnaHRcbiI7DQogICB9DQogICBp ZiAoICAobW91c2VfeCA+IHNjcmVlbngrdykgJiYgKG1vdXNlX3kgPiBzY3Jl ZW55KQ0KICAgICAgICYmKG1vdXNlX3ggPCAodmlzdWFseCpib3hzaXplKS13 KSAmJiAobW91c2VfeSA8IHNjcmVlbnkrdykpDQogICB7DQogICAgIHNjcm9s bFVwKDEpOw0KICAgICBwYXVzZSgpOw0KLy8gICAgIGNlcnIgPDwgIlNjcm9s bCBVcFxuIjsNCiAgIH0NCiAgIGlmICggIChtb3VzZV94ID4gc2NyZWVueCt3 KSAmJiAobW91c2VfeSA+ICh2aXN1YWx5KmJveHNpemUpLXcpDQogICAgICAg JiYobW91c2VfeCA8ICh2aXN1YWx4KmJveHNpemUpLXcpICYmIChtb3VzZV95 IDwgdmlzdWFseSpib3hzaXplKSkNCiAgIHsNCiAgICAgc2Nyb2xsRG93bigx KTsNCiAgICAgcGF1c2UoKTsNCi8vICAgICBjZXJyIDw8ICJTY3JvbGwgRG93 blxuIjsNCiAgIH0NCiB9DQp9Ow0KDQpjbGFzcyBHcmFzczogcHVibGljIE1h cE9iamVjdA0Kew0KIHB1YmxpYzoNCiBHcmFzcyhCSVRNQVAgKnBpY3QsIGlu dCBzaXplX3gsIGludCBzaXplX3kpIDogTWFwT2JqZWN0KHBpY3QsIHNpemVf eCwgc2l6ZV95KQ0KIHsNCiB9DQp9Ow0KDQpjbGFzcyBHcmlkTWFwMiA6IHB1 YmxpYyBHcmlkTWFwDQp7DQogcHVibGljOg0KIAlHcmlkTWFwMihpbnQgczEs IGludCBzMiwgaW50IHMzLCBpbnQgczQsIGludCBzNSwgaW50IHM2KSA6IEdy aWRNYXAoczEsczIsczMsczQsczUsczYpe30NCn07DQoNCnZvaWQgbWFpbigp DQp7DQogYWxsZWdyb19pbml0KCk7DQogaW5zdGFsbF90aW1lcigpOw0KIGlu c3RhbGxfbW91c2UoKTsNCiBzZXRfZ2Z4X21vZGUoR0ZYX0FVVE9ERVRFQ1Qs IDY0MCw0ODAsMCwwKTsNCiBHcmlkTWFwMiBnbSgxMDAsMTAwLDIwLDIwLDAs MCk7DQogUkdCICpwOw0KIEdyYXNzICpncmFzcyA9IG5ldyBHcmFzcyhsb2Fk X2JtcCgiZ3Jhc3MuYm1wIiwgcCksMTksMTkpOw0KIEdyYXNzICpyaXZlciA9 IG5ldyBHcmFzcyhsb2FkX2JtcCgicml2ZXIuYm1wIiwgcCksMTksMTkpOw0K IHNldF9wYWxldHRlKHApOw0KIGdtLmNsZWFyTWFwKGdyYXNzKTsNCiBnbS5k cmF3TWFwKCk7DQogaW50IGVuZGZsYWcgPSAwOw0KIGludCBjOw0KIHNob3df bW91c2Uoc2NyZWVuKTsNCiB3aGlsZSAoIWVuZGZsYWcpIHsNCiAgIHdoaWxl ICgha2JoaXQoKSAmJiAoIWVuZGZsYWcpKSB7DQogICAJZ20uc2Nyb2xsTW91 c2UoKTsNCiAgIH0NCiAgIGMgPSBnZXRrZXkoKTsNCiAgIHN3aXRjaCAoYykg ew0KICAgCWNhc2UgS19VcDogZ20uc2Nyb2xsVXAoMSk7DQogICAgICAgICAg IGJyZWFrOw0KICAgICAgY2FzZSBLX0Rvd246IGdtLnNjcm9sbERvd24oMSk7 DQogICAgICAgICAgIGJyZWFrOw0KICAgICAgY2FzZSBLX0xlZnQ6IGdtLnNj cm9sbExlZnQoMSk7DQogICAgICAgICAgIGJyZWFrOw0KICAgICAgY2FzZSBL X1JpZ2h0OiBnbS5zY3JvbGxSaWdodCgxKTsNCiAgICAgICAgICAgYnJlYWs7 DQogICAgICBjYXNlICdYJzoNCiAgICAgIGNhc2UgJ3gnOiBlbmRmbGFnID0g MTsNCiAgICAgICAgICAgYnJlYWs7DQogICB9DQogfQ0KIGFsbGVncm9fZXhp dCgpOw0KfQ0KDQo= ---=_news35f165d6--