Index: glib/gchecksum.c
===================================================================
--- glib/gchecksum.c	(revision 6334)
+++ glib/gchecksum.c	(working copy)
@@ -1187,7 +1187,7 @@
  * g_checksum_update:
  * @checksum: a #GChecksum
  * @data: buffer used to compute the checksum
- * @length: size of the buffer
+ * @length: size of the buffer, or -1 if it is a null-terminated string.
  *
  * Feeds @data into an existing #GChecksum. The checksum must still be
  * open, that is g_checksum_get_string() or g_checksum_get_digest() must
@@ -1203,6 +1203,9 @@
   g_return_if_fail (checksum != NULL);
   g_return_if_fail (data != NULL);
 
+  if (length < 0)
+    length = strlen (data);
+
   if (checksum->digest_str)
     {
       g_warning ("The checksum `%s' has been closed and cannot be updated "
@@ -1387,7 +1390,7 @@
  * g_compute_checksum_for_string:
  * @checksum_type: a #GChecksumType
  * @str: the string to compute the checksum of
- * @length: the length of the string, or -1
+ * @length: the length of the string, or -1 if the string is null-terminated.
  *
  * Computes the checksum of a string.
  *
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 6334)
+++ ChangeLog	(working copy)
@@ -1,3 +1,8 @@
+2008-01-20  Murray Cumming  <murrayc@murrayc.com>
+
+	* glib/gchecksum.c: (g_checksum_update): Accept -1 for the data 
+	length if the data is a null-terminated string. Bug #510855.
+
 2008-01-18 16:51:23  Tim Janik  <timj@imendio.com>
 
 	* glib/gutils.h: don't define __GNUC_PREREQ which is not in the glib
