Hi all,

If I create a stream with pdf_stm_mem_new and use pdf_stm_read_char to
read each character, I get PDF_EEOF after 4096 bytes.  The attached
patch adds a test case to check for this, but I haven't found the cause
yet.  Does anyone know what's going on?

-- Michael
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [email protected]
# target_branch: file:///home/michael/src/%2Blocal/gnupdf/trunk/
# testament_sha1: 35fde547ca39b3b592af295675a47fe4980fabf9
# timestamp: 2009-10-20 22:55:31 -0400
# base_revision_id: [email protected]
# 
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog	2009-09-20 14:34:41 +0000
+++ ChangeLog	2009-10-21 02:55:11 +0000
@@ -1,3 +1,8 @@
+2009-10-20  Michael Gold  <[email protected]>
+
+	* torture/unit/base/stm/pdf-stm-read-char.c: Add a test case that
+	reads more than PDF_STM_DEFAULT_CACHE_SIZE bytes from a stream.
+
 2009-09-20  Jose E. Marchesi  <[email protected]>
 
 	* configure.ac: Call AC_CONFIG_AUX_DIR.

=== modified file 'torture/unit/base/stm/pdf-stm-read-char.c'
--- torture/unit/base/stm/pdf-stm-read-char.c	2009-08-05 20:32:56 +0000
+++ torture/unit/base/stm/pdf-stm-read-char.c	2009-10-21 02:55:11 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "2009-08-05 21:58:33 davazp"
+/* -*- mode: C -*- Time-stamp: "2009-10-21 02:54:17 mgold"
  *
  *       File:         pdf-stm-read-char.c
  *       Date:         Sat Sep 20 16:59:27 2008
@@ -182,6 +182,59 @@
 
 
 /*
+ * Test: pdf_stm_read_char_004
+ * Description:
+ *   Read more than PDF_STM_DEFAULT_CACHE_SIZE bytes from a stream.
+ * Success condition:
+ *   The entire stream should be read successfully.
+ */
+START_TEST (pdf_stm_read_char_004)
+{
+  pdf_status_t ret;
+  pdf_stm_t stm;
+  pdf_char_t *buf;
+  pdf_char_t ret_char;
+  pdf_size_t buf_size;
+  pdf_size_t buf_pos;
+
+  /* Create a buffer with some contents */
+  buf_size = 42000;
+  pdf_init();
+
+  buf = pdf_alloc (buf_size);
+  fail_if(buf == NULL);
+  memset(buf, 'X', buf_size);
+
+  /* Create the stream */
+  ret = pdf_stm_mem_new (buf,
+                         buf_size,
+                         0, /* Use the default cache size */
+                         PDF_STM_READ,
+                         &stm);
+  fail_if(ret != PDF_OK);
+
+  /* Read all characters from the stream */
+  for (buf_pos = 0; buf_pos < buf_size; ++buf_pos)
+    {
+      ret = pdf_stm_read_char (stm, &ret_char);
+      if (ret != PDF_OK)
+        printf("pdf_stm_read_char_004 failed at %d bytes\n", buf_pos);
+      fail_if(ret != PDF_OK);
+      fail_if(ret_char != 'X');
+    }
+
+  /* Try to read a character from the stream */
+  ret = pdf_stm_read_char (stm, &ret_char);
+  fail_if(ret != PDF_EEOF);
+
+  /* Destroy data */
+  pdf_dealloc (buf);
+  pdf_stm_destroy (stm);
+}
+END_TEST
+
+
+/*
  * Test case creation function
  */
 TCase *
@@ -192,6 +245,7 @@
   tcase_add_test(tc, pdf_stm_read_char_001);
   tcase_add_test(tc, pdf_stm_read_char_002);
   tcase_add_test(tc, pdf_stm_read_char_003);
+  tcase_add_test(tc, pdf_stm_read_char_004);
 
   return tc;
 }

# Begin bundle
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
0Iv2Aq3+fezf/F3JFOFCQ2x3ZAQ=

Attachment: signature.asc
Description: Digital signature

Reply via email to