gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/asobj/Date.cpp


From: Benjamin Wolsey
Subject: [Gnash-commit] gnash ChangeLog server/asobj/Date.cpp
Date: Mon, 31 Mar 2008 07:26:46 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Benjamin Wolsey <bwy>   08/03/31 07:26:46

Modified files:
        .              : ChangeLog 
        server/asobj   : Date.cpp 

Log message:
        Fix segfault on localtime access. Date class is a mess.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6108&r2=1.6109
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Date.cpp?cvsroot=gnash&r1=1.53&r2=1.54

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6108
retrieving revision 1.6109
diff -u -b -r1.6108 -r1.6109
--- ChangeLog   31 Mar 2008 07:13:58 -0000      1.6108
+++ ChangeLog   31 Mar 2008 07:26:46 -0000      1.6109
@@ -1,3 +1,9 @@
+2008-03-31 Benjamin Wolsey <address@hidden>
+
+       * server/asobj/Date.cpp: check for success of localtime - some
+         more-than-32-bit numbers fail - and set to NaN. This (probably)
+         isn't expected behaviour, but fixes a segfault.
+
 2008-03-31 Zou Lunkai <address@hidden>
 
        * libnet/cque.{h, cpp}: add the USE_STATS_QUEUE macro guard, fix

Index: server/asobj/Date.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Date.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -b -r1.53 -r1.54
--- server/asobj/Date.cpp       21 Jan 2008 20:55:55 -0000      1.53
+++ server/asobj/Date.cpp       31 Mar 2008 07:26:46 -0000      1.54
@@ -517,9 +517,11 @@
 #define date_get_proto(function, timefn, element) \
   static as_value function(const fn_call& fn) { \
     boost::intrusive_ptr<date_as_object> date = 
ensureType<date_as_object>(fn.this_ptr); \
-    time_t t = (time_t)(date->value / 1000.0); \
+    time_t t = static_cast<time_t>(date->value / 1000.0); \
     struct tm tm; \
-    return as_value(_##timefn##_r(&t, &tm)->element); \
+    if (!_##timefn##_r(&t, &tm)) \
+    { as_value rv; rv.set_nan(); return rv; } \
+    return as_value(tm.element); \
   }
 
 /// \brief Date.getYear




reply via email to

[Prev in Thread] Current Thread [Next in Thread]