Commit Graph

33 Commits

Author SHA1 Message Date
Дилян Палаузов
4131f0d14a Add (out) to an (optional) parameter
… as it is not (inout).

Closes !9
2019-07-23 11:26:47 +00:00
Michael Catanzaro
18a0d95aa2 Fix -Wsign-compare warning
[23/236] Compiling C object 'lib/76b5a...isc@sha/contrib_gvdb_gvdb-reader.c.o'.
../../../../Projects/epiphany/lib/contrib/gvdb/gvdb-reader.c: In function ‘gvdb_table_get_names’:
../../../../Projects/epiphany/lib/contrib/gvdb/gvdb-reader.c:428:27: warning: comparison of integer expressions of different signedness: ‘guint32’ {aka ‘unsigned int’} and ‘gint’ {aka ‘int’} [-Wsign-compare]
  428 |           else if (parent < n_names && names[parent] != NULL)
      |                           ^

To fix this, we have to change n_names to guint, and then also change
the types of everything it's compared against. This seems to be safe
since none of these should ever be negative.
2019-06-22 13:36:45 -05:00
Philip Withnall
7bf49c8df7 Fix size of preallocated array
Commit 084e1d868 added a preallocation to an array to avoid
reallocations later on, but neglected the fact that after N insertions
into the array, there’s always a NULL terminator added to the end. Fix
the preallocation to include that NULL terminator.

This doesn’t change the correctness of the code, but should eliminate
one reallocation.

Spotted by Sebastian Dröge. See
https://gitlab.gnome.org/GNOME/glib/merge_requests/674.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-02-25 12:38:08 +00:00
Philip Withnall
084e1d8680 Preallocate a GPtrArray to avoid some reallocations later on
Suggested by Georges Basile Stavracas Neto.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-08-16 15:44:09 +01:00
Philip Withnall
a44329c244 Fix type of length returned by gvdb_table_get_names()
It should not be unsigned. The type in the on-disk format is gint32, so
we need to return something at least as wide as that. However, we
should not expose the implementation detail that the on-disk format is
specifically gint32. Use a gsize, since that’s the normal type for array
lengths — but check that we’re not on a platform where (somehow) gsize
is smaller than gint32.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-08-16 15:36:32 +01:00
Philip Withnall
7bed7ea77d Add missing introspection annotations to gvdb_table_get_names()
Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-08-16 15:36:10 +01:00
Philip Withnall
57962aac85 docs: Clarify error values for empty files when loading
Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-08-13 14:34:19 +01:00
Philip Withnall
d2f0461ec0 docs: Use ‘Returns:’ instead of the invalid ‘@returns’
This is based on the commit 59a24ab5a3 in GLib.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-08-13 14:34:19 +01:00
Philip Withnall
c78664e101 Update FSF’s address
(This is based on commit 892fc2e4 from dconf.)

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-08-13 14:34:19 +01:00
Sébastien Wilmet
4763db8a4c gio/gvdb/: LGPLv2+ -> LGPLv2.1+
https://bugzilla.gnome.org/show_bug.cgi?id=776504
2018-08-13 14:34:19 +01:00
Ryan Lortie
2600082151 reader: embrace GBytes
Drop gvdb_table_new_from_data() and add gvdb_table_new_from_bytes().

Since the underlying backingstore of a GvdbTable is now always
refcounted, drop the refcounting on GvdbTable itself.
2012-11-09 13:19:13 -05:00
Ryan Lortie
fc37611a97 gvdb-reader: drop gvdb_table_walk()
The attempt at the simple method for preventing unbounded recursion
proved to be insufficient due to the existence of dconf databases in the
wild that violated the rule (leading to the entire content of the
database being scrapped).  It also still had the ugly assert for less
than 64 levels of recursion that could have been hit by a determined
advisary.

gvdb_table_get_names() allows the dconf-service to do everything it
needs without the troubles associated with the walk approach.
2012-07-09 15:28:17 -04:00
Ryan Lortie
d9577f100b gvdb-reader.c: add gvdb_table_get_names()
This function lists off all names that appear within a particular hash.
2012-07-09 14:32:22 -04:00
Ryan Lortie
82cbc59297 remove a stray variable
This was used to implement a much more complicated check which was
dismissed in favour of the simple 'must follow in file' approach.
2012-07-08 10:44:05 -04:00
Ryan Lortie
374cb1bc87 gvdb-reader: robustness improvements
Improve the robustness of gvdb-reader in two ways.

First: ensure that the result of gvdb_table_has_value() always agrees
with gvdb_table_get_value().  Those two could disagree in the case that
the value was recorded as existing but pointed to an out-of-bounds
region.

Second: prevent gvdb_table_walk() from getting stuck in finite loops due
to self-referential directories.
2012-07-06 21:42:04 -04:00
Ryan Lortie
ae3d42c60f gvdb-reader: refuse to open file with small header
Clean up the logic for dealing with invalid headers and include the case
where the file is too small to contain a fully-formed header.
2012-07-05 19:24:46 -04:00
Ryan Lortie
4e77b52ad8 gvdb-reader: correct whitespace damage 2012-07-05 19:13:58 -04:00
Alexander Larsson
73acf01618 Support creating a GvdbReader from data
This is needed for the glib resource work.
2012-01-13 15:59:56 +01:00
Murray Cumming
d1f6300363 Docs: Changed can not to cannot.
This is a backport from the glib commit 30fdc1a799
2012-01-13 09:23:06 +01:00
Ryan Lortie
92652ac791 hashing: always use signed chars
Our hashing of non-ASCII strings was undefined due to the fact that
'char' is signed on some platforms, unsigned on others.  Always use a
signed char.

Discovered by Alexander Larsson.

https://bugzilla.gnome.org/show_bug.cgi?id=658806
2011-09-12 08:12:44 -04:00
Ryan Lortie
3812559659 Remove unused variable in gvdb-reader
As originally committed against dconf by Owen.

Newer GCC flags this.
2011-02-03 17:26:51 -05:00
Ryan Lortie
a2918d6c3e Fix some harmless sign compare warnings 2011-01-17 15:19:14 -05:00
Ryan Lortie
814c0fcaaf Pass name_length to walk close function
For efficiency and safety.  This way we don't need to scan backwards for
the path separator (trusting that we will find it properly).
2010-12-07 01:36:09 -05:00
Ryan Lortie
e5e491c969 Add gvdb_table_get_raw_value() API for GSettings 2010-10-03 23:02:45 -04:00
Ryan Lortie
a35852bda3 Fix reader on big endian
Some of the hashtable code was failing to byteswap properly.
2010-10-03 21:10:35 -04:00
Ryan Lortie
d63f199d92 Fix is_valid() API
Actually dereference the pointer instead of just checking for NULL
2010-07-18 21:43:18 -04:00
Ryan Lortie
df40747190 Add gvdb_table_is_valid() API
Checks that the on-disk file is still valid.
2010-07-18 20:45:37 -04:00
Ryan Lortie
afea703422 Implement byteswapping in the reader 2010-06-10 15:27:46 -04:00
Ryan Lortie
9a8cba9eb5 drop "options" support 2010-06-10 13:34:56 -04:00
Ryan Lortie
5215d4b6d3 Add API for dconf's sake. 2010-04-28 12:39:02 -05:00
Ryan Lortie
daa1a73c75 Add a missing 'static' on internal functions 2010-04-22 15:45:47 -04:00
Ryan Lortie
dc2b43b3e7 Fix logic error for missing options in reader 2010-04-19 10:17:31 -04:00
Ryan Lortie
0fec2048f0 Initial commit 2010-04-15 21:26:34 -04:00