summaryrefslogtreecommitdiff
authordrw <drw>2003-03-15 16:09:22 (UTC)
committer drw <drw>2003-03-15 16:09:22 (UTC)
commit69823b154b29cd62c9d53f7ebdaae4cb7dd61939 (patch) (unidiff)
treef678ad4bb0cf7005ce00e7231713372220c75cf6
parentede78d4ab60d2c78427c4b1cc51cd9accc0aed1c (diff)
downloadopie-69823b154b29cd62c9d53f7ebdaae4cb7dd61939.zip
opie-69823b154b29cd62c9d53f7ebdaae4cb7dd61939.tar.gz
opie-69823b154b29cd62c9d53f7ebdaae4cb7dd61939.tar.bz2
Added several checks to ensure we have a valid server or destination. Fixes bug #727, and also prevents several other segfault situations.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/aqpkg/settingsimpl.cpp36
1 files changed, 33 insertions, 3 deletions
diff --git a/noncore/settings/aqpkg/settingsimpl.cpp b/noncore/settings/aqpkg/settingsimpl.cpp
index 9f611da..e2afada 100644
--- a/noncore/settings/aqpkg/settingsimpl.cpp
+++ b/noncore/settings/aqpkg/settingsimpl.cpp
@@ -286,11 +286,21 @@ void SettingsImpl :: editServer( int sel )
286{ 286{
287 currentSelectedServer = sel; 287 currentSelectedServer = sel;
288 Server *s = dataMgr->getServer( servers->currentText() ); 288 Server *s = dataMgr->getServer( servers->currentText() );
289 if ( s )
290 {
289 serverName = s->getServerName(); 291 serverName = s->getServerName();
290 servername->setText( s->getServerName() ); 292 servername->setText( s->getServerName() );
291 serverurl->setText( s->getServerUrl() ); 293 serverurl->setText( s->getServerUrl() );
292 active->setChecked( s->isServerActive() ); 294 active->setChecked( s->isServerActive() );
293} 295}
296 else
297 {
298 serverName = "";
299 servername->setText( "" );
300 serverurl->setText( "" );
301 active->setChecked( false );
302 }
303}
294 304
295void SettingsImpl :: newServer() 305void SettingsImpl :: newServer()
296{ 306{
@@ -305,9 +315,12 @@ void SettingsImpl :: removeServer()
305{ 315{
306 changed = true; 316 changed = true;
307 Server *s = dataMgr->getServer( servers->currentText() ); 317 Server *s = dataMgr->getServer( servers->currentText() );
318 if ( s )
319 {
308 dataMgr->getServerList().removeRef( s ); 320 dataMgr->getServerList().removeRef( s );
309 servers->removeItem( currentSelectedServer ); 321 servers->removeItem( currentSelectedServer );
310} 322}
323}
311 324
312void SettingsImpl :: changeServerDetails() 325void SettingsImpl :: changeServerDetails()
313{ 326{
@@ -332,12 +345,12 @@ void SettingsImpl :: changeServerDetails()
332 if ( !newserver ) 345 if ( !newserver )
333 { 346 {
334 Server *s = dataMgr->getServer( servers->currentText() ); 347 Server *s = dataMgr->getServer( servers->currentText() );
335 348 if ( s )
349 {
336 // Update url 350 // Update url
337 s->setServerUrl( serverurl->text() ); 351 s->setServerUrl( serverurl->text() );
338 s->setActive( active->isChecked() ); 352 s->setActive( active->isChecked() );
339 353
340
341 // Check if server name has changed, if it has then we need to replace the key in the map 354 // Check if server name has changed, if it has then we need to replace the key in the map
342 if ( serverName != newName ) 355 if ( serverName != newName )
343 { 356 {
@@ -348,6 +361,7 @@ void SettingsImpl :: changeServerDetails()
348 // Update list box 361 // Update list box
349 servers->changeItem( newName, currentSelectedServer ); 362 servers->changeItem( newName, currentSelectedServer );
350 } 363 }
364 }
351 else 365 else
352 { 366 {
353 Server s( newName, serverurl->text() ); 367 Server s( newName, serverurl->text() );
@@ -365,11 +379,21 @@ void SettingsImpl :: editDestination( int sel )
365{ 379{
366 currentSelectedDestination = sel; 380 currentSelectedDestination = sel;
367 Destination *d = dataMgr->getDestination( destinations->currentText() ); 381 Destination *d = dataMgr->getDestination( destinations->currentText() );
382 if ( d )
383 {
368 destinationName = d->getDestinationName(); 384 destinationName = d->getDestinationName();
369 destinationname->setText( d->getDestinationName() ); 385 destinationname->setText( d->getDestinationName() );
370 destinationurl->setText( d->getDestinationPath() ); 386 destinationurl->setText( d->getDestinationPath() );
371 linkToRoot->setChecked( d->linkToRoot() ); 387 linkToRoot->setChecked( d->linkToRoot() );
372} 388}
389 else
390 {
391 destinationName = "";
392 destinationname->setText( "" );
393 destinationurl->setText( "" );
394 linkToRoot->setChecked( false );
395 }
396}
373 397
374void SettingsImpl :: newDestination() 398void SettingsImpl :: newDestination()
375{ 399{
@@ -384,9 +408,12 @@ void SettingsImpl :: removeDestination()
384{ 408{
385 changed = true; 409 changed = true;
386 Destination *d = dataMgr->getDestination( destinations->currentText() ); 410 Destination *d = dataMgr->getDestination( destinations->currentText() );
411 if ( d )
412 {
387 dataMgr->getDestinationList().removeRef( d ); 413 dataMgr->getDestinationList().removeRef( d );
388 destinations->removeItem( currentSelectedDestination ); 414 destinations->removeItem( currentSelectedDestination );
389} 415}
416}
390 417
391void SettingsImpl :: changeDestinationDetails() 418void SettingsImpl :: changeDestinationDetails()
392{ 419{
@@ -401,7 +428,8 @@ void SettingsImpl :: changeDestinationDetails()
401 if ( !newdestination ) 428 if ( !newdestination )
402 { 429 {
403 Destination *d = dataMgr->getDestination( destinations->currentText() ); 430 Destination *d = dataMgr->getDestination( destinations->currentText() );
404 431 if ( d )
432 {
405 // Update url 433 // Update url
406 d->setDestinationPath( destinationurl->text() ); 434 d->setDestinationPath( destinationurl->text() );
407 d->linkToRoot( linkToRoot->isChecked() ); 435 d->linkToRoot( linkToRoot->isChecked() );
@@ -415,6 +443,7 @@ void SettingsImpl :: changeDestinationDetails()
415 // Update list box 443 // Update list box
416 destinations->changeItem( newName, currentSelectedDestination ); 444 destinations->changeItem( newName, currentSelectedDestination );
417 } 445 }
446
418#ifdef QWS 447#ifdef QWS
419 QString key = newName; 448 QString key = newName;
420 key += "_linkToRoot"; 449 key += "_linkToRoot";
@@ -422,6 +451,7 @@ void SettingsImpl :: changeDestinationDetails()
422 cfg.writeEntry( key, val ); 451 cfg.writeEntry( key, val );
423#endif 452#endif
424 } 453 }
454 }
425 else 455 else
426 { 456 {
427 dataMgr->getDestinationList().append( new Destination( newName, destinationurl->text() ) ); 457 dataMgr->getDestinationList().append( new Destination( newName, destinationurl->text() ) );