bug31098.phpt 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. --TEST--
  2. Bug #31098 (isset() / empty() incorrectly returns true in dereference of a wrong type)
  3. --FILE--
  4. <?php
  5. $a = '';
  6. var_dump(isset($a->b));
  7. $a = 'a';
  8. var_dump(isset($a->b));
  9. $a = '0';
  10. var_dump(isset($a->b));
  11. $a = '';
  12. var_dump(isset($a['b']));
  13. $a = 'a';
  14. var_dump(isset($a['b']));
  15. $a = '0';
  16. var_dump(isset($a['b']));
  17. $simpleString = "Bogus String Text";
  18. echo isset($simpleString->wrong)?"bug\n":"ok\n";
  19. echo isset($simpleString["wrong"])?"bug\n":"ok\n";
  20. echo isset($simpleString[-20])?"bug\n":"ok\n";
  21. echo isset($simpleString[0])?"ok\n":"bug\n";
  22. echo isset($simpleString["0"])?"ok\n":"bug\n";
  23. echo isset($simpleString["16"])?"ok\n":"bug\n";
  24. echo isset($simpleString["17"])?"bug\n":"ok\n";
  25. echo $simpleString->wrong === null?"ok\n":"bug\n";
  26. echo $simpleString["wrong"] === "B"?"ok\n":"bug\n";
  27. echo $simpleString["0"] === "B"?"ok\n":"bug\n";
  28. $simpleString["wrong"] = "f";
  29. echo $simpleString["0"] === "f"?"ok\n":"bug\n";
  30. ?>
  31. --EXPECTF--
  32. bool(false)
  33. bool(false)
  34. bool(false)
  35. bool(false)
  36. bool(false)
  37. bool(false)
  38. ok
  39. ok
  40. ok
  41. ok
  42. ok
  43. ok
  44. ok
  45. Notice: Trying to get property 'wrong' of non-object in %s on line %d
  46. ok
  47. Warning: Illegal string offset 'wrong' in %s on line %d
  48. ok
  49. ok
  50. Warning: Illegal string offset 'wrong' in %s on line %d
  51. ok