selecting 'extended partition' twice caused a segfault. i cannot believe i
* src/Dialog_Partition_New.cc: selecting 'extended partition' twice caused a segfault. i cannot believe i didn't detect this bug earlier :| Fixed. also made it possible to create an unformatted partition. * src/GParted_Core.cc: backend support for creating partition without filesystem (unformatted).
This commit is contained in:
parent
3ba1e996f4
commit
7235baf156
|
@ -1,3 +1,9 @@
|
||||||
|
2004-11-28 Bart Hakvoort <gparted@users.sf.net>
|
||||||
|
|
||||||
|
* src/Dialog_Partition_New.cc: selecting 'extended partition' twice caused a segfault. i cannot believe i didn't detect this bug earlier :| Fixed.
|
||||||
|
also made it possible to create an unformatted partition.
|
||||||
|
* src/GParted_Core.cc: backend support for creating partition without filesystem (unformatted).
|
||||||
|
|
||||||
2004-11-28 Bart Hakvoort <gparted@users.sf.net>
|
2004-11-28 Bart Hakvoort <gparted@users.sf.net>
|
||||||
|
|
||||||
* src/Dialog_Disklabel.cc,
|
* src/Dialog_Disklabel.cc,
|
||||||
|
|
|
@ -42,7 +42,8 @@ void Dialog_Partition_New::Set_Data( const Partition & partition, bool any_exten
|
||||||
this ->new_count = new_count;
|
this ->new_count = new_count;
|
||||||
this ->selected_partition = partition;
|
this ->selected_partition = partition;
|
||||||
this ->FILESYSTEMS = FILESYSTEMS ;
|
this ->FILESYSTEMS = FILESYSTEMS ;
|
||||||
this ->FILESYSTEMS .erase( this ->FILESYSTEMS .end( ) ) ;//remove dummy "unknown"
|
this ->FILESYSTEMS .back( ) .filesystem = _("Unformatted") ;
|
||||||
|
this ->FILESYSTEMS .back( ) .create = true ;
|
||||||
|
|
||||||
FS fs ; fs.filesystem = "extended" ;
|
FS fs ; fs.filesystem = "extended" ;
|
||||||
this ->FILESYSTEMS .push_back( fs ) ;
|
this ->FILESYSTEMS .push_back( fs ) ;
|
||||||
|
@ -167,13 +168,13 @@ void Dialog_Partition_New::optionmenu_changed( bool type )
|
||||||
//optionmenu_type
|
//optionmenu_type
|
||||||
if ( type )
|
if ( type )
|
||||||
{
|
{
|
||||||
if ( optionmenu_type .get_history( ) == GParted::EXTENDED )
|
if ( optionmenu_type .get_history( ) == GParted::EXTENDED && menu_filesystem .items( ) .size( ) < FILESYSTEMS .size( ) )
|
||||||
{
|
{
|
||||||
menu_filesystem .items( ) .push_back( Gtk::Menu_Helpers::MenuElem( "extended" ) ) ;
|
menu_filesystem .items( ) .push_back( Gtk::Menu_Helpers::MenuElem( "extended" ) ) ;
|
||||||
optionmenu_filesystem .set_history( menu_filesystem .items( ) .size( ) -1 ) ;
|
optionmenu_filesystem .set_history( menu_filesystem .items( ) .size( ) -1 ) ;
|
||||||
optionmenu_filesystem .set_sensitive( false ) ;
|
optionmenu_filesystem .set_sensitive( false ) ;
|
||||||
}
|
}
|
||||||
else if ( menu_filesystem .items( ) .size( ) == FILESYSTEMS .size( ) )
|
else if ( optionmenu_type .get_history( ) != GParted::EXTENDED && menu_filesystem .items( ) .size( ) == FILESYSTEMS .size( ) )
|
||||||
{
|
{
|
||||||
menu_filesystem .items( ) .remove( menu_filesystem .items( ) .back( ) ) ;
|
menu_filesystem .items( ) .remove( menu_filesystem .items( ) .back( ) ) ;
|
||||||
optionmenu_filesystem .set_sensitive( true ) ;
|
optionmenu_filesystem .set_sensitive( true ) ;
|
||||||
|
@ -185,8 +186,7 @@ void Dialog_Partition_New::optionmenu_changed( bool type )
|
||||||
if ( ! type )
|
if ( ! type )
|
||||||
{
|
{
|
||||||
//needed vor upper limit check (see also Dialog_Base_Partition::on_signal_resize )
|
//needed vor upper limit check (see also Dialog_Base_Partition::on_signal_resize )
|
||||||
//BART: i don't understand previous sentence, but i think this one's needed for correct color..
|
selected_partition .filesystem = FILESYSTEMS[ optionmenu_filesystem .get_history( ) ] .filesystem ;
|
||||||
selected_partition .filesystem = FILESYSTEMS[ optionmenu_filesystem .get_history() ] .filesystem ;
|
|
||||||
|
|
||||||
//set new spinbutton ranges
|
//set new spinbutton ranges
|
||||||
long MIN, MAX;
|
long MIN, MAX;
|
||||||
|
|
|
@ -297,6 +297,10 @@ bool GParted_Core::Create( const Glib::ustring & device_path, Partition & new_pa
|
||||||
{
|
{
|
||||||
set_proper_filesystem( new_partition .filesystem ) ;
|
set_proper_filesystem( new_partition .filesystem ) ;
|
||||||
|
|
||||||
|
//most likely this means the user created an unformatted partition, however in theory, it could also screw some errorhandling.
|
||||||
|
if ( ! p_filesystem )
|
||||||
|
return true ;
|
||||||
|
|
||||||
return p_filesystem ->Create( device_path, new_partition ) ;
|
return p_filesystem ->Create( device_path, new_partition ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue