start hardening the looping
[dweather.git] / Serial.pm
index 26b9c2e49697092ed0bf0823c8e836e3faf5df97..fdfb9e055b9e609f07686e36c16ef14cbfd38b3d 100644 (file)
--- a/Serial.pm
+++ b/Serial.pm
@@ -31,7 +31,7 @@ sub new
 
        # get my attributes
        $$self->{ORIGTERM} = POSIX::Termios->new();
-       my $term =  $$self->{TERM} = POSIX::Termios->new();
+       my $term = POSIX::Termios->new();
        $$self->{ORIGTERM}->getattr(fileno($self));
        $term->getattr(fileno($self));
        my ($speed) = grep {/^\d+$/} @_; 
@@ -65,6 +65,8 @@ sub new
        $term->setcflag($cflag); $term->setlflag($lflag);
        $term->setoflag($oflag); $term->setiflag($iflag);
        $term->setattr(fileno($self), TCSANOW);
+       $$self->{TERM} = $term;
+       
        return $self;
 }
 
@@ -79,13 +81,13 @@ sub setattr
 {
        my $self = shift;
        my $attr = shift || $$self->{TERM};
-       $attr->setattr(fileno($self), &POSIX::TCSANOW);
+       $attr->setattr(fileno($self), &POSIX::TCSANOW) if fileno($self);
 }
 
 sub close
 {
        my $self = shift;
-       $self->setattr(delete $$self->{ORIGTERM});
+       $self->setattr(delete $$self->{ORIGTERM}) if fileno($self) && $$self->{ORIGTERM};
        $self->SUPER::close;
 }