bug52113.phpt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. --TEST--
  2. Bug #52113 (Seg fault while creating (by unserialization) DatePeriod)
  3. --INI--
  4. date.timezone=UTC
  5. --FILE--
  6. <?php
  7. $start = new DateTime('2003-01-02 08:00:00');
  8. $end = new DateTime('2003-01-02 12:00:00');
  9. $diff = $start->diff($end);
  10. $p = new DatePeriod($start, $diff, 2);
  11. $diff_s = serialize($diff);
  12. var_dump($diff, $diff_s);
  13. var_export($diff);
  14. $diff_un = unserialize($diff_s);
  15. $p = new DatePeriod($start, $diff_un, 2);
  16. var_dump($diff_un, $p);
  17. $unser = DateInterval::__set_state(array(
  18. 'y' => 7,
  19. 'm' => 6,
  20. 'd' => 5,
  21. 'h' => 4,
  22. 'i' => 3,
  23. 's' => 2,
  24. 'f' => 0.876543,
  25. 'invert' => 1,
  26. 'days' => 2400,
  27. ));
  28. $p = new DatePeriod($start, $diff_un, 2);
  29. var_dump($unser, $p);
  30. ?>
  31. --EXPECTF--
  32. object(DateInterval)#%d (16) {
  33. ["y"]=>
  34. int(0)
  35. ["m"]=>
  36. int(0)
  37. ["d"]=>
  38. int(0)
  39. ["h"]=>
  40. int(4)
  41. ["i"]=>
  42. int(0)
  43. ["s"]=>
  44. int(0)
  45. ["f"]=>
  46. float(0)
  47. ["weekday"]=>
  48. int(0)
  49. ["weekday_behavior"]=>
  50. int(0)
  51. ["first_last_day_of"]=>
  52. int(0)
  53. ["invert"]=>
  54. int(0)
  55. ["days"]=>
  56. int(0)
  57. ["special_type"]=>
  58. int(0)
  59. ["special_amount"]=>
  60. int(0)
  61. ["have_weekday_relative"]=>
  62. int(0)
  63. ["have_special_relative"]=>
  64. int(0)
  65. }
  66. string(332) "O:12:"DateInterval":16:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:4;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:7:"weekday";i:0;s:16:"weekday_behavior";i:0;s:17:"first_last_day_of";i:0;s:6:"invert";i:0;s:4:"days";i:0;s:12:"special_type";i:0;s:14:"special_amount";i:0;s:21:"have_weekday_relative";i:0;s:21:"have_special_relative";i:0;}"
  67. DateInterval::__set_state(array(
  68. 'y' => 0,
  69. 'm' => 0,
  70. 'd' => 0,
  71. 'h' => 4,
  72. 'i' => 0,
  73. 's' => 0,
  74. 'f' => 0.0,
  75. 'weekday' => 0,
  76. 'weekday_behavior' => 0,
  77. 'first_last_day_of' => 0,
  78. 'invert' => 0,
  79. 'days' => 0,
  80. 'special_type' => 0,
  81. 'special_amount' => 0,
  82. 'have_weekday_relative' => 0,
  83. 'have_special_relative' => 0,
  84. ))object(DateInterval)#%d (16) {
  85. ["y"]=>
  86. int(0)
  87. ["m"]=>
  88. int(0)
  89. ["d"]=>
  90. int(0)
  91. ["h"]=>
  92. int(4)
  93. ["i"]=>
  94. int(0)
  95. ["s"]=>
  96. int(0)
  97. ["f"]=>
  98. float(0)
  99. ["weekday"]=>
  100. int(0)
  101. ["weekday_behavior"]=>
  102. int(0)
  103. ["first_last_day_of"]=>
  104. int(0)
  105. ["invert"]=>
  106. int(0)
  107. ["days"]=>
  108. int(0)
  109. ["special_type"]=>
  110. int(0)
  111. ["special_amount"]=>
  112. int(0)
  113. ["have_weekday_relative"]=>
  114. int(0)
  115. ["have_special_relative"]=>
  116. int(0)
  117. }
  118. object(DatePeriod)#%d (6) {
  119. ["start"]=>
  120. object(DateTime)#%d (3) {
  121. ["date"]=>
  122. string(26) "2003-01-02 08:00:00.000000"
  123. ["timezone_type"]=>
  124. int(3)
  125. ["timezone"]=>
  126. string(3) "UTC"
  127. }
  128. ["current"]=>
  129. NULL
  130. ["end"]=>
  131. NULL
  132. ["interval"]=>
  133. object(DateInterval)#%d (16) {
  134. ["y"]=>
  135. int(0)
  136. ["m"]=>
  137. int(0)
  138. ["d"]=>
  139. int(0)
  140. ["h"]=>
  141. int(4)
  142. ["i"]=>
  143. int(0)
  144. ["s"]=>
  145. int(0)
  146. ["f"]=>
  147. float(0)
  148. ["weekday"]=>
  149. int(0)
  150. ["weekday_behavior"]=>
  151. int(0)
  152. ["first_last_day_of"]=>
  153. int(0)
  154. ["invert"]=>
  155. int(0)
  156. ["days"]=>
  157. int(0)
  158. ["special_type"]=>
  159. int(0)
  160. ["special_amount"]=>
  161. int(0)
  162. ["have_weekday_relative"]=>
  163. int(0)
  164. ["have_special_relative"]=>
  165. int(0)
  166. }
  167. ["recurrences"]=>
  168. int(3)
  169. ["include_start_date"]=>
  170. bool(true)
  171. }
  172. object(DateInterval)#%d (16) {
  173. ["y"]=>
  174. int(7)
  175. ["m"]=>
  176. int(6)
  177. ["d"]=>
  178. int(5)
  179. ["h"]=>
  180. int(4)
  181. ["i"]=>
  182. int(3)
  183. ["s"]=>
  184. int(2)
  185. ["f"]=>
  186. float(0.876543)
  187. ["weekday"]=>
  188. int(-1)
  189. ["weekday_behavior"]=>
  190. int(-1)
  191. ["first_last_day_of"]=>
  192. int(-1)
  193. ["invert"]=>
  194. int(1)
  195. ["days"]=>
  196. int(2400)
  197. ["special_type"]=>
  198. int(0)
  199. ["special_amount"]=>
  200. int(-1)
  201. ["have_weekday_relative"]=>
  202. int(0)
  203. ["have_special_relative"]=>
  204. int(0)
  205. }
  206. object(DatePeriod)#%d (6) {
  207. ["start"]=>
  208. object(DateTime)#%d (3) {
  209. ["date"]=>
  210. string(26) "2003-01-02 08:00:00.000000"
  211. ["timezone_type"]=>
  212. int(3)
  213. ["timezone"]=>
  214. string(3) "UTC"
  215. }
  216. ["current"]=>
  217. NULL
  218. ["end"]=>
  219. NULL
  220. ["interval"]=>
  221. object(DateInterval)#%d (16) {
  222. ["y"]=>
  223. int(0)
  224. ["m"]=>
  225. int(0)
  226. ["d"]=>
  227. int(0)
  228. ["h"]=>
  229. int(4)
  230. ["i"]=>
  231. int(0)
  232. ["s"]=>
  233. int(0)
  234. ["f"]=>
  235. float(0)
  236. ["weekday"]=>
  237. int(0)
  238. ["weekday_behavior"]=>
  239. int(0)
  240. ["first_last_day_of"]=>
  241. int(0)
  242. ["invert"]=>
  243. int(0)
  244. ["days"]=>
  245. int(0)
  246. ["special_type"]=>
  247. int(0)
  248. ["special_amount"]=>
  249. int(0)
  250. ["have_weekday_relative"]=>
  251. int(0)
  252. ["have_special_relative"]=>
  253. int(0)
  254. }
  255. ["recurrences"]=>
  256. int(3)
  257. ["include_start_date"]=>
  258. bool(true)
  259. }