1. 19 Jan, 2021 5 commits
    • Chris White's avatar
    • Henry Wilkes's avatar
      gstvalue: preserve parse behaviour with warning · 5eba2b83
      Henry Wilkes authored
      Preserve the previous behaviour where:
          name, val="5";
      passed to gst_structure_from_string would have resulted in an int value,
      rather than a string, despite the quote marks.
      
      This will be changed to being interpreted as a string in the future, but
      for the time being we will issue a warning about this to give users time
      to fix their code to no longer rely on this bug.
      
      Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
      5eba2b83
    • Henry Wilkes's avatar
      gstvalue: make gst_string_unwrap less strict · 445df0c7
      Henry Wilkes authored
      Allow a string in gst_string_unwrap to include unescaped characters that
      are not in GST_STRING_IS_ASCII. This extra leniency allows
      gst_structure_from_string to, e.g., receive
          name, val=(string)"string with space";
      
      Note that many gst tests, and potentially users, exploited this behaviour
      by giving
          name, val="string with space";
      i.e. without the (string) type specifier. This was allowed before
      because, without a type specifier, the string was passed to
      _priv_gst_value_parse_string with unescape set to TRUE, *rather* than
      being sent to gst_string_unwrap. This caused a difference in behaviour
      between strings that are or are not preceded by (string). E.g.
          name, val=(string)"string with space";
      would fail, whilst
          name, val="string with space";
      would not. And
          name, val=(string)"\316\261";
      would produce a val="α", whereas
          name, val=(string)"\316\261";
      would produce a val="316261" (a bug).
      
      The current behaviour is to treat both of these cases the same, which is
      desirable. But in order to not break potentially common usage of this
      discrepancy (it was in our own tests), the best option is to make string
      parsing less strict in general.
      
      New behaviour would be for
          name, val=(string)"string with space";
      to pass and give val="string with space", and
          name, val="\316\261";
      would produce a val="α".
      
      Also changed deserializing string test to expect successes where
      previously a failure was expected.
      
      In a similar way, this also effected the deserializing of GstStructure,
      GstCaps, GstTagList and GstCapsFeatures. So, now
          name, val=(structure)"sub-name, sub-val=(string)\"a: \\316\\261\";";
      will also pass and give sub-val="a: α". Note that the quote marks
      and backslash still need to be escaped for the sub-structure, but other
      characters need not be.
      
      Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
      445df0c7
    • Henry Wilkes's avatar
      value: add serialize-deserialize tests · 454b121f
      Henry Wilkes authored
      Added tests to ensure that the gst_value_deserialize reverses
      gst_value_serialize.
      
      Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
      454b121f
    • Henry Wilkes's avatar
      structure: don't unescape values before deserializing · 7f267395
      Henry Wilkes authored
      No longer call _priv_gst_value_parse_string with unescape set to TRUE
      before passing a value to gst_value_deserialize in
      _priv_gst_value_parse_value. This latter function is called by
      gst_structure_from_string and gst_caps_from_string.
      
      When gst_structure_to_string and gst_caps_to_string are called, no
      escaping is performed after calling gst_value_serialize. Therefore, by
      unescaping the value string, we were introducing an additional operation
      that was not performed by the original *_to_string functions. In
      particular, this has meant that the derialization functions for many
      non-basic types are incomplete reverses of the corresponding
      serialization function (i.e., if you pipe the output of the
      serialization function into the deserialization function it could fail)
      because they have to compensate for this additional escaping operation,
      when really this should be the domain of the deserialization functions
      instead.
      
      Correspondingly changed a few deserialization functions.
      
      Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/452
      
      Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
      7f267395
  2. 14 Jan, 2021 5 commits
  3. 12 Jan, 2021 1 commit
  4. 11 Jan, 2021 1 commit
  5. 07 Jan, 2021 1 commit
  6. 23 Dec, 2020 1 commit
  7. 22 Dec, 2020 1 commit
  8. 20 Dec, 2020 1 commit
  9. 11 Dec, 2020 3 commits
  10. 10 Dec, 2020 7 commits
  11. 08 Dec, 2020 1 commit
  12. 07 Dec, 2020 5 commits
  13. 04 Dec, 2020 3 commits
  14. 03 Dec, 2020 1 commit
  15. 02 Dec, 2020 3 commits
  16. 20 Nov, 2020 1 commit