Date: | 2011-07-20 13:43:25 (12 years 8 months ago) |
---|---|
Author: | Paul Cercueil |
Commit: | 81a607c36e49b9830a41bbd4f07288db8bdeb1b5 |
Message: | Fixed a good number of memory leaks. The objects created with "new" were destroyed with "free()", instead of "delete"; as a result, the destructors were never called. |
Files: |
src/gmenu2x.cpp (5 diffs) src/linkapp.cpp (1 diff) src/menu.cpp (2 diffs) src/settingsdialog.cpp (1 diff) src/surfacecollection.cpp (1 diff) |
Change Details
src/gmenu2x.cpp | ||
---|---|---|
400 | 400 | |
401 | 401 | quit(); |
402 | 402 | |
403 | free(menu); | |
404 | free(s); | |
405 | free(font); | |
403 | delete menu; | |
404 | delete font; | |
406 | 405 | } |
407 | 406 | |
408 | 407 | void GMenu2X::quit() { |
409 | 408 | fflush(NULL); |
410 | 409 | sc.clear(); |
411 | free(s); | |
410 | delete s; | |
412 | 411 | |
413 | 412 | #ifdef UNLOCK_VT |
414 | 413 | SDL_QuitSubSystem(SDL_INIT_EVERYTHING & ~SDL_INIT_VIDEO); |
... | ... | |
433 | 432 | sc.del("bgmain"); |
434 | 433 | |
435 | 434 | // Load wallpaper. |
436 | free(bg); | |
435 | delete bg; | |
437 | 436 | bg = Surface::loadImage(confStr["wallpaper"]); |
438 | 437 | if (!bg) { |
439 | 438 | bg = Surface::emptySurface(resX, resY); |
... | ... | |
449 | 448 | if (sd) sd->blit(bgmain, 3, bottomBarIconY); |
450 | 449 | string df = getDiskFree(); |
451 | 450 | bgmain->write(font, df, 22, bottomBarTextY, ASFont::HAlignLeft, ASFont::VAlignMiddle); |
452 | free(sd); | |
451 | delete sd; | |
453 | 452 | |
454 | 453 | Surface *volume = Surface::loadImage("imgs/volume.png", confStr["skin"]); |
455 | 454 | volumeX = 27+font->getTextWidth(df); |
456 | 455 | if (volume) volume->blit(bgmain, volumeX, bottomBarIconY); |
457 | 456 | volumeX += 19; |
458 | free(volume); | |
457 | delete volume; | |
459 | 458 | |
460 | 459 | Surface *cpu = Surface::loadImage("imgs/cpu.png", confStr["skin"]); |
461 | 460 | cpuX = volumeX+font->getTextWidth("100")+5; |
462 | 461 | if (cpu) cpu->blit(bgmain, cpuX, bottomBarIconY); |
463 | 462 | cpuX += 19; |
464 | 463 | manualX = cpuX+font->getTextWidth("300Mhz")+5; |
465 | free(cpu); | |
464 | delete cpu; | |
466 | 465 | |
467 | 466 | int serviceX = resX-38; |
468 | 467 | if (usbnet) { |
... | ... | |
471 | 470 | "imgs/webserver.png", confStr["skin"]); |
472 | 471 | if (webserver) webserver->blit(bgmain, serviceX, bottomBarIconY); |
473 | 472 | serviceX -= 19; |
474 | free(webserver); | |
473 | delete webserver; | |
475 | 474 | } |
476 | 475 | if (samba) { |
477 | 476 | Surface *sambaS = Surface::loadImage( |
478 | 477 | "imgs/samba.png", confStr["skin"]); |
479 | 478 | if (sambaS) sambaS->blit(bgmain, serviceX, bottomBarIconY); |
480 | 479 | serviceX -= 19; |
481 | free(sambaS); | |
480 | delete sambaS; | |
482 | 481 | } |
483 | 482 | if (inet) { |
484 | 483 | Surface *inetS = Surface::loadImage("imgs/inet.png", confStr["skin"]); |
485 | 484 | if (inetS) inetS->blit(bgmain, serviceX, bottomBarIconY); |
486 | 485 | serviceX -= 19; |
487 | free(inetS); | |
486 | delete inetS; | |
488 | 487 | } |
489 | 488 | } |
490 | 489 | |
... | ... | |
493 | 492 | |
494 | 493 | void GMenu2X::initFont() { |
495 | 494 | if (font != NULL) { |
496 | free(font); | |
495 | delete font; | |
497 | 496 | font = NULL; |
498 | 497 | } |
499 | 498 |
src/linkapp.cpp | ||
---|---|---|
365 | 365 | break; |
366 | 366 | } |
367 | 367 | } |
368 | free(bg); | |
368 | delete bg; | |
369 | 369 | return; |
370 | 370 | } |
371 | 371 |
src/menu.cpp | ||
---|---|---|
116 | 116 | void Menu::freeLinks() { |
117 | 117 | for (vector<linklist>::iterator section = links.begin(); section<links.end(); section++) |
118 | 118 | for (linklist::iterator link = section->begin(); link<section->end(); link++) |
119 | free(*link); | |
119 | delete *link; | |
120 | 120 | } |
121 | 121 | |
122 | 122 | linklist *Menu::sectionLinks(int i) { |
... | ... | |
454 | 454 | if (link->targetExists()) |
455 | 455 | links[i].push_back( link ); |
456 | 456 | else |
457 | free(link); | |
457 | delete link; | |
458 | 458 | } |
459 | 459 | } |
460 | 460 | } |
src/settingsdialog.cpp | ||
---|---|---|
40 | 40 | } |
41 | 41 | |
42 | 42 | SettingsDialog::~SettingsDialog() { |
43 | for (uint i=0; i<voices.size(); i++) | |
44 | free(voices[i]); | |
43 | for (vector<MenuSetting *>::iterator it = voices.begin(); it != voices.end(); ++it) | |
44 | delete *it; | |
45 | 45 | } |
46 | 46 | |
47 | 47 | bool SettingsDialog::exec() { |
src/surfacecollection.cpp | ||
---|---|---|
139 | 139 | void SurfaceCollection::del(const string &path) { |
140 | 140 | SurfaceHash::iterator i = surfaces.find(path); |
141 | 141 | if (i != surfaces.end()) { |
142 | free(i->second); | |
142 | delete i->second; | |
143 | 143 | surfaces.erase(i); |
144 | 144 | } |
145 | 145 | } |
Branches:
install_locations
master
opkrun
packages