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