Title: [opsview] [11370] make sure timeval does not modify its arguments
Revision
11370
Author
aburzynski
Date
2013-02-06 16:43:57 +0000 (Wed, 06 Feb 2013)

Log Message

make sure timeval does not modify its arguments

Modified Paths


Modified: trunk/opsview-core/opsview-perl-modules/Opsview-Utils-NDOLogsImporter-XS/XS.xs
===================================================================
--- trunk/opsview-core/opsview-perl-modules/Opsview-Utils-NDOLogsImporter-XS/XS.xs	2013-02-06 16:32:26 UTC (rev 11369)
+++ trunk/opsview-core/opsview-perl-modules/Opsview-Utils-NDOLogsImporter-XS/XS.xs	2013-02-06 16:43:57 UTC (rev 11370)
@@ -229,8 +229,7 @@
 timeval (ts)
         char *ts
 	PREINIT:
-        char *sec;
-        char *mil;
+        const char *mil;
         int s=0;
         int m=0;
 	PPCODE:
@@ -238,20 +237,15 @@
         EXTEND(SP, 2);
 
         if ( ts ) {
-            sec = strtok( ts, ".");
+            s = atoi(ts);
 
-            if ( sec != NULL ) {
-                s = atoi(sec);
+            mil = strchr(ts, '.');
 
-                mil = strtok(NULL, "\0");
-
-                if ( mil != NULL ) {
-                    m = atoi(mil);
-                }
+            if ( mil != NULL ) {
+                m = atoi(mil+1);
             }
         }
 
-
         PUSHs(sv_2mortal( newSViv(s) ));
         PUSHs(sv_2mortal( newSViv(m) ));
     }

Modified: trunk/opsview-core/opsview-perl-modules/Opsview-Utils-NDOLogsImporter-XS/t/Opsview-Utils-NDOLogsImporter-XS.t
===================================================================
--- trunk/opsview-core/opsview-perl-modules/Opsview-Utils-NDOLogsImporter-XS/t/Opsview-Utils-NDOLogsImporter-XS.t	2013-02-06 16:32:26 UTC (rev 11369)
+++ trunk/opsview-core/opsview-perl-modules/Opsview-Utils-NDOLogsImporter-XS/t/Opsview-Utils-NDOLogsImporter-XS.t	2013-02-06 16:43:57 UTC (rev 11370)
@@ -1,5 +1,5 @@
 
-use Test::More tests => 17;
+use Test::More tests => 36;
 BEGIN { use_ok('Opsview::Utils::NDOLogsImporter::XS') }
 
 #########################
@@ -19,16 +19,27 @@
 push @timevals, 1353330305.17987, [ 1353330305, 17987 ];
 
 while ( my ( $num, $expected ) = splice( @timevals, 0, 2 ) ) {
+    my $copy = "$num";
     is_deeply(
         [ Opsview::Utils::NDOLogsImporter::XS::timeval($num) ],
         $expected, "$num converted to " . join( ".", @$expected )
     );
+    is_deeply(
+        [ Opsview::Utils::NDOLogsImporter::XS::timeval($num) ],
+        $expected, "..and can be repeated"
+    );
+    is( $num, $copy, "..and argument is not modified" );
 }
 is_deeply(
     [ Opsview::Utils::NDOLogsImporter::XS::timeval(undef) ],
     [ 0, 0 ],
     "undef converted to 0.0"
 );
+is_deeply(
+    [ Opsview::Utils::NDOLogsImporter::XS::timeval(undef) ],
+    [ 0, 0 ],
+    "undef converted to 0.0"
+);
 
 my @escapes = (
 

_______________________________________________
Opsview-checkins mailing list
Opsview-checkins@lists.opsview.org
http://lists.opsview.org/lists/listinfo/opsview-checkins

Reply via email to