diff --git a/ChangeLog b/ChangeLog
index 395532e..126ab30 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Fri, 10 Oct 2008 11:16:23 -0700  Google Inc. <opensource@google.com>
+
+  * Issue #15: open-vcdiff fails to compile on Fedora 9
+    * Add header <string.h> to source files that use memcmp, memset, memcpy,
+      and/or strlen.
+    * Change C++-style includes like <cstdlib> to C-style includes like
+      <stdlib.h> so that function names are guaranteed to be defined
+      in the global namespace.
+  * Issue #8: Decoder should not crash if it runs out of memory
+    * Add a new interface that places a limit on the maximum bytes allowed in
+      a single target window or a target file.
+  * Issue #13: Add unit test for vcdiff command-line executable
+    * Unit test vcdiff_test.sh added for Linux and Mac builds.
+    * Still need to add a Windows version of this test.
+
 Tue, 02 Sep 2008 09:27:54 -0700  Google Inc. <opensource@google.com>
 
   * Fix problems found on OpenBSD platform.
diff --git a/Makefile.am b/Makefile.am
index 9a7d98e..dfa4d55 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -25,33 +25,28 @@
 			src/google/output_string.h
 
 docdir = $(prefix)/share/doc/$(PACKAGE)-$(VERSION)
-## This is for HTML and other documentation you want to install.
-## Add your documentation files (in doc/) in addition to these
-## top-level boilerplate files.  Also add a TODO file if you have one.
-dist_doc_DATA = AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS
+dist_doc_DATA = AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS \
+		src/gtest/README
 
 # The manual pages that should be installed
 dist_man1_MANS = man/vcdiff.1
 
-## The libraries (.so's) you want to install
+## The libraries (.so's) you want to build and install
 lib_LTLIBRARIES =
 
-## Internal libraries that will not be installed
-noinst_LTLIBRARIES =
-
-## Binaries to be built; these are added in the RULES section
+## Binaries to be built and installed; these are added in the RULES section
 bin_PROGRAMS =
 
-## unittests you want to run when people type 'make check'.
-## Individual tests are added to TESTS in the RULES section.
-## TESTS is for binary unittests, check_SCRIPTS for script-based unittests.
-## TESTS_ENVIRONMENT sets environment variables for when you run unittest,
-## but it only seems to take effect for *binary* unittests (argh!)
-TESTS =
-TESTS_ENVIRONMENT = SRCDIR="$(top_srcdir)"
+## Binary and script unit tests you want to run when people type 'make check'.
+## Tests are added one by one to these lists in the RULES sections.
+check_PROGRAMS =
 check_SCRIPTS =
-# Every time you add a unittest to check_SCRIPTS, add it here too
+
+## Other binaries, scripts, and libraries that are built but not automatically
+## installed.
+noinst_PROGRAMS =
 noinst_SCRIPTS =
+noinst_LTLIBRARIES =
 
 ## vvvv RULES TO MAKE THE LIBRARIES, BINARIES, AND UNITTESTS
 
@@ -134,65 +129,72 @@
 vcdiff_SOURCES = src/vcdiff_main.cc
 vcdiff_LDADD = libvcddec.la libvcdenc.la libgflags.la
 
-TESTS += addrcache_test
+check_PROGRAMS += addrcache_test
 addrcache_test_SOURCES = src/addrcache_test.cc
 addrcache_test_LDADD = libvcdcom.la libgtest_main.la
 
-TESTS += blockhash_test
+check_PROGRAMS += blockhash_test
 blockhash_test_SOURCES = src/blockhash_test.cc
 blockhash_test_LDADD = libvcdenc.la libgtest_main.la
 
-TESTS += codetable_test
+check_PROGRAMS += codetable_test
 codetable_test_SOURCES = src/codetable_test.cc
 codetable_test_LDADD = libvcdcom.la libgtest_main.la
 
-TESTS += decodetable_test
+check_PROGRAMS += decodetable_test
 decodetable_test_SOURCES = src/decodetable_test.cc
 decodetable_test_LDADD = libvcddec.la libgtest_main.la
 
-TESTS += encodetable_test
+check_PROGRAMS += encodetable_test
 encodetable_test_SOURCES = src/encodetable_test.cc
 encodetable_test_LDADD = libvcdenc.la libgtest_main.la
 
-TESTS += headerparser_test
+check_PROGRAMS += headerparser_test
 headerparser_test_SOURCES = src/headerparser_test.cc
 headerparser_test_LDADD = libvcddec.la libgtest_main.la
 
-TESTS += instruction_map_test
+check_PROGRAMS += instruction_map_test
 instruction_map_test_SOURCES = src/instruction_map_test.cc
 instruction_map_test_LDADD = libvcdenc.la libgtest_main.la
 
-TESTS += output_string_test
-output_string_test_SOURCES = src/output_string_test.cc
+check_PROGRAMS += output_string_test
+output_string_test_SOURCES = src/output_string_crope.h \
+			     src/output_string_test.cc
 output_string_test_LDADD = libgtest_main.la
 
-TESTS += rolling_hash_test
+check_PROGRAMS += rolling_hash_test
 rolling_hash_test_SOURCES = src/rolling_hash_test.cc
 rolling_hash_test_LDADD = libvcdcom.la libgtest_main.la
 
-TESTS += varint_bigendian_test
+check_PROGRAMS += varint_bigendian_test
 varint_bigendian_test_SOURCES = src/varint_bigendian_test.cc
 varint_bigendian_test_LDADD = libvcdcom.la libgtest_main.la
 
-TESTS += vcdecoder_test
+check_PROGRAMS += vcdecoder_test
 vcdecoder_test_SOURCES = src/vcdecoder_test.h src/vcdecoder_test.cc \
-			 src/vcdecoder_test1.cc src/vcdecoder_test2.cc \
-			 src/vcdecoder_test3.cc src/vcdecoder_test4.cc
+			 src/vcdecoder1_test.cc src/vcdecoder2_test.cc \
+			 src/vcdecoder3_test.cc src/vcdecoder4_test.cc
 vcdecoder_test_LDADD = libvcddec.la libgtest_main.la
 
-TESTS += vcdiffengine_test
+check_PROGRAMS += vcdiffengine_test
 vcdiffengine_test_SOURCES = src/vcdiffengine_test.cc
 vcdiffengine_test_LDADD = libvcdenc.la libgtest_main.la
 
-TESTS += vcencoder_test
+check_PROGRAMS += vcencoder_test
 vcencoder_test_SOURCES = src/vcencoder_test.cc
 vcencoder_test_LDADD = libvcddec.la libvcdenc.la libgtest_main.la
 
+check_SCRIPTS += src/vcdiff_test.sh
+dist_noinst_DATA = testdata/configure.ac.v0.1 \
+                   testdata/configure.ac.v0.2 \
+                   testdata/allocates_4gb.vcdiff
+
 ## ^^^^ END OF RULES TO MAKE THE LIBRARIES, BINARIES, AND UNITTESTS
 
-## This should always include $(TESTS), but may also include other
-## binaries that you compile but don't want automatically installed.
-noinst_PROGRAMS = $(TESTS)
+TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+## TESTS_ENVIRONMENT sets environment variables for when you run unit tests,
+## but it only seems to take effect for *binary* unit tests (argh!)
+TESTS_ENVIRONMENT = SRCDIR="$(top_srcdir)"
 
 rpm: dist-gzip packages/rpm.sh packages/rpm/rpm.spec
 	@cd packages && ./rpm.sh ${PACKAGE} ${VERSION}
@@ -203,5 +205,30 @@
 libtool: $(LIBTOOL_DEPS)
 	$(SHELL) ./config.status --recheck
 
-EXTRA_DIST = packages/rpm.sh packages/rpm/rpm.spec packages/deb.sh \
-  packages/deb autogen.sh $(SCRIPTS) libtool
+EXTRA_DIST = $(check_SCRIPTS) \
+	     autogen.sh \
+	     packages/rpm.sh \
+	     packages/rpm/rpm.spec \
+	     packages/deb.sh \
+	     packages/deb \
+	     vsprojects/config.h \
+	     vsprojects/stdint.h \
+	     vsprojects/open-vcdiff.sln \
+	     vsprojects/addrcache_test/addrcache_test.vcproj \
+	     vsprojects/blockhash_test/blockhash_test.vcproj \
+	     vsprojects/codetable_test/codetable_test.vcproj \
+	     vsprojects/decodetable_test/decodetable_test.vcproj \
+	     vsprojects/encodetable_test/encodetable_test.vcproj \
+	     vsprojects/gtest/gtest.vcproj \
+	     vsprojects/headerparser_test/headerparser_test.vcproj \
+	     vsprojects/instruction_map_test/instruction_map_test.vcproj \
+	     vsprojects/output_string_test/output_string_test.vcproj \
+	     vsprojects/rolling_hash_test/rolling_hash_test.vcproj \
+	     vsprojects/varint_bigendian_test/varint_bigendian_test.vcproj \
+	     vsprojects/vcdcom/vcdcom.vcproj \
+	     vsprojects/vcddec/vcddec.vcproj \
+	     vsprojects/vcdecoder_test/vcdecoder_test.vcproj \
+	     vsprojects/vcdenc/vcdenc.vcproj \
+	     vsprojects/vcdiff/vcdiff.vcproj \
+	     vsprojects/vcdiffengine_test/vcdiffengine_test.vcproj \
+	     vsprojects/vcencoder_test/vcencoder_test.vcproj
diff --git a/Makefile.in b/Makefile.in
index e50ce58..f3c1219 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -49,9 +49,16 @@
 # "-Wextra" when we can be sure that early gcc versions will not be used.
 @GCC_TRUE@am__append_1 = -Wall -Wwrite-strings -Woverloaded-virtual -W
 bin_PROGRAMS = vcdiff$(EXEEXT)
-noinst_PROGRAMS = $(am__EXEEXT_1)
+check_PROGRAMS = addrcache_test$(EXEEXT) blockhash_test$(EXEEXT) \
+	codetable_test$(EXEEXT) decodetable_test$(EXEEXT) \
+	encodetable_test$(EXEEXT) headerparser_test$(EXEEXT) \
+	instruction_map_test$(EXEEXT) output_string_test$(EXEEXT) \
+	rolling_hash_test$(EXEEXT) varint_bigendian_test$(EXEEXT) \
+	vcdecoder_test$(EXEEXT) vcdiffengine_test$(EXEEXT) \
+	vcencoder_test$(EXEEXT)
+noinst_PROGRAMS =
 DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \
-	$(dist_man1_MANS) $(googleinclude_HEADERS) \
+	$(dist_man1_MANS) $(dist_noinst_DATA) $(googleinclude_HEADERS) \
 	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(top_srcdir)/configure $(top_srcdir)/src/config.h.in AUTHORS \
 	COPYING ChangeLog INSTALL NEWS THANKS compile config.guess \
@@ -100,13 +107,6 @@
 	instruction_map.lo vcdiffengine.lo vcencoder.lo
 libvcdenc_la_OBJECTS = $(am_libvcdenc_la_OBJECTS)
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-am__EXEEXT_1 = addrcache_test$(EXEEXT) blockhash_test$(EXEEXT) \
-	codetable_test$(EXEEXT) decodetable_test$(EXEEXT) \
-	encodetable_test$(EXEEXT) headerparser_test$(EXEEXT) \
-	instruction_map_test$(EXEEXT) output_string_test$(EXEEXT) \
-	rolling_hash_test$(EXEEXT) varint_bigendian_test$(EXEEXT) \
-	vcdecoder_test$(EXEEXT) vcdiffengine_test$(EXEEXT) \
-	vcencoder_test$(EXEEXT)
 PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
 am_addrcache_test_OBJECTS = addrcache_test.$(OBJEXT)
 addrcache_test_OBJECTS = $(am_addrcache_test_OBJECTS)
@@ -139,8 +139,8 @@
 varint_bigendian_test_OBJECTS = $(am_varint_bigendian_test_OBJECTS)
 varint_bigendian_test_DEPENDENCIES = libvcdcom.la libgtest_main.la
 am_vcdecoder_test_OBJECTS = vcdecoder_test.$(OBJEXT) \
-	vcdecoder_test1.$(OBJEXT) vcdecoder_test2.$(OBJEXT) \
-	vcdecoder_test3.$(OBJEXT) vcdecoder_test4.$(OBJEXT)
+	vcdecoder1_test.$(OBJEXT) vcdecoder2_test.$(OBJEXT) \
+	vcdecoder3_test.$(OBJEXT) vcdecoder4_test.$(OBJEXT)
 vcdecoder_test_OBJECTS = $(am_vcdecoder_test_OBJECTS)
 vcdecoder_test_DEPENDENCIES = libvcddec.la libgtest_main.la
 am_vcdiff_OBJECTS = vcdiff_main.$(OBJEXT)
@@ -197,7 +197,7 @@
 NROFF = nroff
 MANS = $(dist_man1_MANS)
 dist_docDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(dist_doc_DATA)
+DATA = $(dist_doc_DATA) $(dist_noinst_DATA)
 googleincludeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(googleinclude_HEADERS)
 ETAGS = etags
@@ -324,7 +324,9 @@
 			src/google/output_string.h
 
 docdir = $(prefix)/share/doc/$(PACKAGE)-$(VERSION)
-dist_doc_DATA = AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS
+dist_doc_DATA = AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS \
+		src/gtest/README
+
 
 # The manual pages that should be installed
 dist_man1_MANS = man/vcdiff.1
@@ -335,6 +337,8 @@
 
 # libvcdenc: The open-vcdiff *encoder* library
 lib_LTLIBRARIES = libvcdcom.la libvcddec.la libvcdenc.la
+check_SCRIPTS = src/vcdiff_test.sh
+noinst_SCRIPTS = 
 
 # google-gflags: Used for command-line client
 #     Please refer to http://code.google.com/p/google-gflags/ for details
@@ -342,14 +346,6 @@
 # gtest (Google Test): Used for unit tests only
 #     Please refer to http://code.google.com/p/googletest/ for details
 noinst_LTLIBRARIES = libgflags.la libgtest.la libgtest_main.la
-TESTS = addrcache_test blockhash_test codetable_test decodetable_test \
-	encodetable_test headerparser_test instruction_map_test \
-	output_string_test rolling_hash_test varint_bigendian_test \
-	vcdecoder_test vcdiffengine_test vcencoder_test
-TESTS_ENVIRONMENT = SRCDIR="$(top_srcdir)"
-check_SCRIPTS = 
-# Every time you add a unittest to check_SCRIPTS, add it here too
-noinst_SCRIPTS = 
 libgflags_la_SOURCES = src/gflags/gflags.h \
 		       src/gflags.cc \
 		       src/gflags_reporting.cc
@@ -427,23 +423,56 @@
 headerparser_test_LDADD = libvcddec.la libgtest_main.la
 instruction_map_test_SOURCES = src/instruction_map_test.cc
 instruction_map_test_LDADD = libvcdenc.la libgtest_main.la
-output_string_test_SOURCES = src/output_string_test.cc
+output_string_test_SOURCES = src/output_string_crope.h \
+			     src/output_string_test.cc
+
 output_string_test_LDADD = libgtest_main.la
 rolling_hash_test_SOURCES = src/rolling_hash_test.cc
 rolling_hash_test_LDADD = libvcdcom.la libgtest_main.la
 varint_bigendian_test_SOURCES = src/varint_bigendian_test.cc
 varint_bigendian_test_LDADD = libvcdcom.la libgtest_main.la
 vcdecoder_test_SOURCES = src/vcdecoder_test.h src/vcdecoder_test.cc \
-			 src/vcdecoder_test1.cc src/vcdecoder_test2.cc \
-			 src/vcdecoder_test3.cc src/vcdecoder_test4.cc
+			 src/vcdecoder1_test.cc src/vcdecoder2_test.cc \
+			 src/vcdecoder3_test.cc src/vcdecoder4_test.cc
 
 vcdecoder_test_LDADD = libvcddec.la libgtest_main.la
 vcdiffengine_test_SOURCES = src/vcdiffengine_test.cc
 vcdiffengine_test_LDADD = libvcdenc.la libgtest_main.la
 vcencoder_test_SOURCES = src/vcencoder_test.cc
 vcencoder_test_LDADD = libvcddec.la libvcdenc.la libgtest_main.la
-EXTRA_DIST = packages/rpm.sh packages/rpm/rpm.spec packages/deb.sh \
-  packages/deb autogen.sh $(SCRIPTS) libtool
+dist_noinst_DATA = testdata/configure.ac.v0.1 \
+                   testdata/configure.ac.v0.2 \
+                   testdata/allocates_4gb.vcdiff
+
+TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+TESTS_ENVIRONMENT = SRCDIR="$(top_srcdir)"
+EXTRA_DIST = $(check_SCRIPTS) \
+	     autogen.sh \
+	     packages/rpm.sh \
+	     packages/rpm/rpm.spec \
+	     packages/deb.sh \
+	     packages/deb \
+	     vsprojects/config.h \
+	     vsprojects/stdint.h \
+	     vsprojects/open-vcdiff.sln \
+	     vsprojects/addrcache_test/addrcache_test.vcproj \
+	     vsprojects/blockhash_test/blockhash_test.vcproj \
+	     vsprojects/codetable_test/codetable_test.vcproj \
+	     vsprojects/decodetable_test/decodetable_test.vcproj \
+	     vsprojects/encodetable_test/encodetable_test.vcproj \
+	     vsprojects/gtest/gtest.vcproj \
+	     vsprojects/headerparser_test/headerparser_test.vcproj \
+	     vsprojects/instruction_map_test/instruction_map_test.vcproj \
+	     vsprojects/output_string_test/output_string_test.vcproj \
+	     vsprojects/rolling_hash_test/rolling_hash_test.vcproj \
+	     vsprojects/varint_bigendian_test/varint_bigendian_test.vcproj \
+	     vsprojects/vcdcom/vcdcom.vcproj \
+	     vsprojects/vcddec/vcddec.vcproj \
+	     vsprojects/vcdecoder_test/vcdecoder_test.vcproj \
+	     vsprojects/vcdenc/vcdenc.vcproj \
+	     vsprojects/vcdiff/vcdiff.vcproj \
+	     vsprojects/vcdiffengine_test/vcdiffengine_test.vcproj \
+	     vsprojects/vcencoder_test/vcencoder_test.vcproj
 
 all: all-am
 
@@ -576,6 +605,13 @@
 	  rm -f $$p $$f ; \
 	done
 
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+
 clean-noinstPROGRAMS:
 	@list='$(noinst_PROGRAMS)'; for p in $$list; do \
 	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
@@ -659,11 +695,11 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varint_bigendian.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varint_bigendian_test.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder1_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder2_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder3_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder4_test.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder_test1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder_test2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder_test3.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdecoder_test4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdiff_main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdiffengine.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcdiffengine_test.Po@am__quote@
@@ -1006,61 +1042,61 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test.obj `if test -f 'src/vcdecoder_test.cc'; then $(CYGPATH_W) 'src/vcdecoder_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test.cc'; fi`
 
-vcdecoder_test1.o: src/vcdecoder_test1.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder_test1.o -MD -MP -MF "$(DEPDIR)/vcdecoder_test1.Tpo" -c -o vcdecoder_test1.o `test -f 'src/vcdecoder_test1.cc' || echo '$(srcdir)/'`src/vcdecoder_test1.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder_test1.Tpo" "$(DEPDIR)/vcdecoder_test1.Po"; else rm -f "$(DEPDIR)/vcdecoder_test1.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder_test1.cc' object='vcdecoder_test1.o' libtool=no @AMDEPBACKSLASH@
+vcdecoder1_test.o: src/vcdecoder1_test.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder1_test.o -MD -MP -MF "$(DEPDIR)/vcdecoder1_test.Tpo" -c -o vcdecoder1_test.o `test -f 'src/vcdecoder1_test.cc' || echo '$(srcdir)/'`src/vcdecoder1_test.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder1_test.Tpo" "$(DEPDIR)/vcdecoder1_test.Po"; else rm -f "$(DEPDIR)/vcdecoder1_test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder1_test.cc' object='vcdecoder1_test.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test1.o `test -f 'src/vcdecoder_test1.cc' || echo '$(srcdir)/'`src/vcdecoder_test1.cc
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder1_test.o `test -f 'src/vcdecoder1_test.cc' || echo '$(srcdir)/'`src/vcdecoder1_test.cc
 
-vcdecoder_test1.obj: src/vcdecoder_test1.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder_test1.obj -MD -MP -MF "$(DEPDIR)/vcdecoder_test1.Tpo" -c -o vcdecoder_test1.obj `if test -f 'src/vcdecoder_test1.cc'; then $(CYGPATH_W) 'src/vcdecoder_test1.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test1.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder_test1.Tpo" "$(DEPDIR)/vcdecoder_test1.Po"; else rm -f "$(DEPDIR)/vcdecoder_test1.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder_test1.cc' object='vcdecoder_test1.obj' libtool=no @AMDEPBACKSLASH@
+vcdecoder1_test.obj: src/vcdecoder1_test.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder1_test.obj -MD -MP -MF "$(DEPDIR)/vcdecoder1_test.Tpo" -c -o vcdecoder1_test.obj `if test -f 'src/vcdecoder1_test.cc'; then $(CYGPATH_W) 'src/vcdecoder1_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder1_test.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder1_test.Tpo" "$(DEPDIR)/vcdecoder1_test.Po"; else rm -f "$(DEPDIR)/vcdecoder1_test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder1_test.cc' object='vcdecoder1_test.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test1.obj `if test -f 'src/vcdecoder_test1.cc'; then $(CYGPATH_W) 'src/vcdecoder_test1.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test1.cc'; fi`
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder1_test.obj `if test -f 'src/vcdecoder1_test.cc'; then $(CYGPATH_W) 'src/vcdecoder1_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder1_test.cc'; fi`
 
-vcdecoder_test2.o: src/vcdecoder_test2.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder_test2.o -MD -MP -MF "$(DEPDIR)/vcdecoder_test2.Tpo" -c -o vcdecoder_test2.o `test -f 'src/vcdecoder_test2.cc' || echo '$(srcdir)/'`src/vcdecoder_test2.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder_test2.Tpo" "$(DEPDIR)/vcdecoder_test2.Po"; else rm -f "$(DEPDIR)/vcdecoder_test2.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder_test2.cc' object='vcdecoder_test2.o' libtool=no @AMDEPBACKSLASH@
+vcdecoder2_test.o: src/vcdecoder2_test.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder2_test.o -MD -MP -MF "$(DEPDIR)/vcdecoder2_test.Tpo" -c -o vcdecoder2_test.o `test -f 'src/vcdecoder2_test.cc' || echo '$(srcdir)/'`src/vcdecoder2_test.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder2_test.Tpo" "$(DEPDIR)/vcdecoder2_test.Po"; else rm -f "$(DEPDIR)/vcdecoder2_test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder2_test.cc' object='vcdecoder2_test.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test2.o `test -f 'src/vcdecoder_test2.cc' || echo '$(srcdir)/'`src/vcdecoder_test2.cc
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder2_test.o `test -f 'src/vcdecoder2_test.cc' || echo '$(srcdir)/'`src/vcdecoder2_test.cc
 
-vcdecoder_test2.obj: src/vcdecoder_test2.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder_test2.obj -MD -MP -MF "$(DEPDIR)/vcdecoder_test2.Tpo" -c -o vcdecoder_test2.obj `if test -f 'src/vcdecoder_test2.cc'; then $(CYGPATH_W) 'src/vcdecoder_test2.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test2.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder_test2.Tpo" "$(DEPDIR)/vcdecoder_test2.Po"; else rm -f "$(DEPDIR)/vcdecoder_test2.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder_test2.cc' object='vcdecoder_test2.obj' libtool=no @AMDEPBACKSLASH@
+vcdecoder2_test.obj: src/vcdecoder2_test.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder2_test.obj -MD -MP -MF "$(DEPDIR)/vcdecoder2_test.Tpo" -c -o vcdecoder2_test.obj `if test -f 'src/vcdecoder2_test.cc'; then $(CYGPATH_W) 'src/vcdecoder2_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder2_test.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder2_test.Tpo" "$(DEPDIR)/vcdecoder2_test.Po"; else rm -f "$(DEPDIR)/vcdecoder2_test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder2_test.cc' object='vcdecoder2_test.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test2.obj `if test -f 'src/vcdecoder_test2.cc'; then $(CYGPATH_W) 'src/vcdecoder_test2.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test2.cc'; fi`
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder2_test.obj `if test -f 'src/vcdecoder2_test.cc'; then $(CYGPATH_W) 'src/vcdecoder2_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder2_test.cc'; fi`
 
-vcdecoder_test3.o: src/vcdecoder_test3.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder_test3.o -MD -MP -MF "$(DEPDIR)/vcdecoder_test3.Tpo" -c -o vcdecoder_test3.o `test -f 'src/vcdecoder_test3.cc' || echo '$(srcdir)/'`src/vcdecoder_test3.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder_test3.Tpo" "$(DEPDIR)/vcdecoder_test3.Po"; else rm -f "$(DEPDIR)/vcdecoder_test3.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder_test3.cc' object='vcdecoder_test3.o' libtool=no @AMDEPBACKSLASH@
+vcdecoder3_test.o: src/vcdecoder3_test.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder3_test.o -MD -MP -MF "$(DEPDIR)/vcdecoder3_test.Tpo" -c -o vcdecoder3_test.o `test -f 'src/vcdecoder3_test.cc' || echo '$(srcdir)/'`src/vcdecoder3_test.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder3_test.Tpo" "$(DEPDIR)/vcdecoder3_test.Po"; else rm -f "$(DEPDIR)/vcdecoder3_test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder3_test.cc' object='vcdecoder3_test.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test3.o `test -f 'src/vcdecoder_test3.cc' || echo '$(srcdir)/'`src/vcdecoder_test3.cc
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder3_test.o `test -f 'src/vcdecoder3_test.cc' || echo '$(srcdir)/'`src/vcdecoder3_test.cc
 
-vcdecoder_test3.obj: src/vcdecoder_test3.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder_test3.obj -MD -MP -MF "$(DEPDIR)/vcdecoder_test3.Tpo" -c -o vcdecoder_test3.obj `if test -f 'src/vcdecoder_test3.cc'; then $(CYGPATH_W) 'src/vcdecoder_test3.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test3.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder_test3.Tpo" "$(DEPDIR)/vcdecoder_test3.Po"; else rm -f "$(DEPDIR)/vcdecoder_test3.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder_test3.cc' object='vcdecoder_test3.obj' libtool=no @AMDEPBACKSLASH@
+vcdecoder3_test.obj: src/vcdecoder3_test.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder3_test.obj -MD -MP -MF "$(DEPDIR)/vcdecoder3_test.Tpo" -c -o vcdecoder3_test.obj `if test -f 'src/vcdecoder3_test.cc'; then $(CYGPATH_W) 'src/vcdecoder3_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder3_test.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder3_test.Tpo" "$(DEPDIR)/vcdecoder3_test.Po"; else rm -f "$(DEPDIR)/vcdecoder3_test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder3_test.cc' object='vcdecoder3_test.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test3.obj `if test -f 'src/vcdecoder_test3.cc'; then $(CYGPATH_W) 'src/vcdecoder_test3.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test3.cc'; fi`
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder3_test.obj `if test -f 'src/vcdecoder3_test.cc'; then $(CYGPATH_W) 'src/vcdecoder3_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder3_test.cc'; fi`
 
-vcdecoder_test4.o: src/vcdecoder_test4.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder_test4.o -MD -MP -MF "$(DEPDIR)/vcdecoder_test4.Tpo" -c -o vcdecoder_test4.o `test -f 'src/vcdecoder_test4.cc' || echo '$(srcdir)/'`src/vcdecoder_test4.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder_test4.Tpo" "$(DEPDIR)/vcdecoder_test4.Po"; else rm -f "$(DEPDIR)/vcdecoder_test4.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder_test4.cc' object='vcdecoder_test4.o' libtool=no @AMDEPBACKSLASH@
+vcdecoder4_test.o: src/vcdecoder4_test.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder4_test.o -MD -MP -MF "$(DEPDIR)/vcdecoder4_test.Tpo" -c -o vcdecoder4_test.o `test -f 'src/vcdecoder4_test.cc' || echo '$(srcdir)/'`src/vcdecoder4_test.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder4_test.Tpo" "$(DEPDIR)/vcdecoder4_test.Po"; else rm -f "$(DEPDIR)/vcdecoder4_test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder4_test.cc' object='vcdecoder4_test.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test4.o `test -f 'src/vcdecoder_test4.cc' || echo '$(srcdir)/'`src/vcdecoder_test4.cc
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder4_test.o `test -f 'src/vcdecoder4_test.cc' || echo '$(srcdir)/'`src/vcdecoder4_test.cc
 
-vcdecoder_test4.obj: src/vcdecoder_test4.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder_test4.obj -MD -MP -MF "$(DEPDIR)/vcdecoder_test4.Tpo" -c -o vcdecoder_test4.obj `if test -f 'src/vcdecoder_test4.cc'; then $(CYGPATH_W) 'src/vcdecoder_test4.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test4.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder_test4.Tpo" "$(DEPDIR)/vcdecoder_test4.Po"; else rm -f "$(DEPDIR)/vcdecoder_test4.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder_test4.cc' object='vcdecoder_test4.obj' libtool=no @AMDEPBACKSLASH@
+vcdecoder4_test.obj: src/vcdecoder4_test.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdecoder4_test.obj -MD -MP -MF "$(DEPDIR)/vcdecoder4_test.Tpo" -c -o vcdecoder4_test.obj `if test -f 'src/vcdecoder4_test.cc'; then $(CYGPATH_W) 'src/vcdecoder4_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder4_test.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vcdecoder4_test.Tpo" "$(DEPDIR)/vcdecoder4_test.Po"; else rm -f "$(DEPDIR)/vcdecoder4_test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='src/vcdecoder4_test.cc' object='vcdecoder4_test.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder_test4.obj `if test -f 'src/vcdecoder_test4.cc'; then $(CYGPATH_W) 'src/vcdecoder_test4.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder_test4.cc'; fi`
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vcdecoder4_test.obj `if test -f 'src/vcdecoder4_test.cc'; then $(CYGPATH_W) 'src/vcdecoder4_test.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcdecoder4_test.cc'; fi`
 
 vcdiff_main.o: src/vcdiff_main.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vcdiff_main.o -MD -MP -MF "$(DEPDIR)/vcdiff_main.Tpo" -c -o vcdiff_main.o `test -f 'src/vcdiff_main.cc' || echo '$(srcdir)/'`src/vcdiff_main.cc; \
@@ -1317,7 +1353,7 @@
 distdir: $(DISTFILES)
 	$(am__remove_distdir)
 	mkdir $(distdir)
-	$(mkdir_p) $(distdir)/m4 $(distdir)/man $(distdir)/packages $(distdir)/packages/rpm $(distdir)/src $(distdir)/src/google
+	$(mkdir_p) $(distdir)/m4 $(distdir)/man $(distdir)/packages $(distdir)/packages/rpm $(distdir)/src $(distdir)/src/google $(distdir)/src/gtest $(distdir)/testdata $(distdir)/vsprojects $(distdir)/vsprojects/addrcache_test $(distdir)/vsprojects/blockhash_test $(distdir)/vsprojects/codetable_test $(distdir)/vsprojects/decodetable_test $(distdir)/vsprojects/encodetable_test $(distdir)/vsprojects/gtest $(distdir)/vsprojects/headerparser_test $(distdir)/vsprojects/instruction_map_test $(distdir)/vsprojects/output_string_test $(distdir)/vsprojects/rolling_hash_test $(distdir)/vsprojects/varint_bigendian_test $(distdir)/vsprojects/vcdcom $(distdir)/vsprojects/vcddec $(distdir)/vsprojects/vcdecoder_test $(distdir)/vsprojects/vcdenc $(distdir)/vsprojects/vcdiff $(distdir)/vsprojects/vcdiffengine_test $(distdir)/vsprojects/vcencoder_test
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
 	list='$(DISTFILES)'; for file in $$list; do \
@@ -1442,7 +1478,7 @@
 	       $(distcleancheck_listfiles) ; \
 	       exit 1; } >&2
 check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) $(check_SCRIPTS)
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
 	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
 check: check-am
 all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) $(DATA) \
@@ -1479,9 +1515,9 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
-	clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
-	mostlyclean-am
+clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+	clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
+	clean-noinstPROGRAMS mostlyclean-am
 
 distclean: distclean-am
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1538,24 +1574,24 @@
 uninstall-man: uninstall-man1
 
 .PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \
-	clean clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
-	clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
-	ctags dist dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ \
-	dist-zip distcheck distclean distclean-compile \
-	distclean-generic distclean-hdr distclean-libtool \
-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am \
-	install-dist_docDATA install-exec install-exec-am \
-	install-googleincludeHEADERS install-info install-info-am \
-	install-libLTLIBRARIES install-man install-man1 install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-binPROGRAMS \
-	uninstall-dist_docDATA uninstall-googleincludeHEADERS \
-	uninstall-info-am uninstall-libLTLIBRARIES uninstall-man \
-	uninstall-man1
+	clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+	clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
+	clean-noinstPROGRAMS ctags dist dist-all dist-bzip2 dist-gzip \
+	dist-shar dist-tarZ dist-zip distcheck distclean \
+	distclean-compile distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dist_docDATA install-exec \
+	install-exec-am install-googleincludeHEADERS install-info \
+	install-info-am install-libLTLIBRARIES install-man \
+	install-man1 install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-binPROGRAMS uninstall-dist_docDATA \
+	uninstall-googleincludeHEADERS uninstall-info-am \
+	uninstall-libLTLIBRARIES uninstall-man uninstall-man1
 
 
 rpm: dist-gzip packages/rpm.sh packages/rpm/rpm.spec
diff --git a/configure b/configure
index 01797f8..f817e0c 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for open-vcdiff 0.2.
+# Generated by GNU Autoconf 2.59 for open-vcdiff 0.3.
 #
 # Report bugs to <opensource@google.com>.
 #
@@ -423,8 +423,8 @@
 # Identity of this package.
 PACKAGE_NAME='open-vcdiff'
 PACKAGE_TARNAME='open-vcdiff'
-PACKAGE_VERSION='0.2'
-PACKAGE_STRING='open-vcdiff 0.2'
+PACKAGE_VERSION='0.3'
+PACKAGE_STRING='open-vcdiff 0.3'
 PACKAGE_BUGREPORT='opensource@google.com'
 
 ac_unique_file="README"
@@ -954,7 +954,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures open-vcdiff 0.2 to adapt to many kinds of systems.
+\`configure' configures open-vcdiff 0.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1020,7 +1020,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of open-vcdiff 0.2:";;
+     short | recursive ) echo "Configuration of open-vcdiff 0.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1159,7 +1159,7 @@
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-open-vcdiff configure 0.2
+open-vcdiff configure 0.3
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1173,7 +1173,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by open-vcdiff $as_me 0.2, which was
+It was created by open-vcdiff $as_me 0.3, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1817,7 +1817,7 @@
 
 # Define the identity of the package.
  PACKAGE='open-vcdiff'
- VERSION='0.2'
+ VERSION='0.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -18747,13 +18747,17 @@
 fi
 
 
-case $host in
-  *86*-*-*bsd* | *86*-*-gnu*)
+# Built-in memcmp can be inefficient when gcc compiles for x86 processors.
+# In those cases, use an alternative function instead of memcmp.
+case $host_cpu in
+  *86*)
+    if test "$GCC" = "yes"; then
 
 cat >>confdefs.h <<\_ACEOF
 #define VCDIFF_USE_BLOCK_COMPARE_WORDS 1
 _ACEOF
 
+    fi
     ;;
 esac
 
@@ -21162,7 +21166,7 @@
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by open-vcdiff $as_me 0.2, which was
+This file was extended by open-vcdiff $as_me 0.3, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -21225,7 +21229,7 @@
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-open-vcdiff config.status 0.2
+open-vcdiff config.status 0.3
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/configure.ac b/configure.ac
index 8872538..e1d9234 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@
 # make sure we're interpreted by some minimal autoconf
 AC_PREREQ(2.57)
 
-AC_INIT(open-vcdiff, 0.2, opensource@google.com)
+AC_INIT(open-vcdiff, 0.3, opensource@google.com)
 AC_CONFIG_SRCDIR(README)
 AM_INIT_AUTOMAKE
 AM_CONFIG_HEADER(src/config.h)
@@ -22,10 +22,14 @@
 # Check whether some low-level functions/files are available
 AC_HEADER_STDC
 
-case $host in
-  *86*-*-*bsd* | *86*-*-gnu*)
-    AC_DEFINE(VCDIFF_USE_BLOCK_COMPARE_WORDS, 1,
-              Use custom compare function instead of memcmp)
+# Built-in memcmp can be inefficient when gcc compiles for x86 processors.
+# In those cases, use an alternative function instead of memcmp.
+case $host_cpu in
+  *86*)
+    if test "$GCC" = "yes"; then
+      AC_DEFINE(VCDIFF_USE_BLOCK_COMPARE_WORDS, 1,
+                Use custom compare function instead of memcmp)
+    fi
     ;;
 esac
 
diff --git a/packages/deb/changelog b/packages/deb/changelog
index 733358c..6cfb830 100644
--- a/packages/deb/changelog
+++ b/packages/deb/changelog
@@ -1,3 +1,20 @@
+open-vcdiff (0.3-1) unstable; urgency=low
+
+  * Issue #15: open-vcdiff fails to compile on Fedora 9
+    * Add header <string.h> to source files that use memcmp, memset, memcpy,
+      and/or strlen.
+    * Change C++-style includes like <cstdlib> to C-style includes like
+      <stdlib.h> so that function names are guaranteed to be defined in the
+      global namespace.
+  * Issue #8: Decoder should not crash if it runs out of memory
+    * Add a new interface that places a limit on the maximum bytes allowed in
+      a single target window or a target file.
+  * Issue #13: Add unit test for vcdiff command-line executable
+    * Unit test vcdiff_test.sh added for Linux and Mac builds.
+    * Still need to add a Windows version of this test.
+
+ -- Google Inc. <opensource@google.com>  Fri, 10 Oct 2008 11:16:23 -0700
+
 open-vcdiff (0.2-1) unstable; urgency=low
 
   * Fix problems found on OpenBSD platform.
diff --git a/src/addrcache.h b/src/addrcache.h
index f2862e8..2974809 100644
--- a/src/addrcache.h
+++ b/src/addrcache.h
@@ -22,7 +22,6 @@
 #define OPEN_VCDIFF_ADDRCACHE_H_
 
 #include <config.h>
-#include <cstring>             // memset
 #include <vector>
 #include "vcdiff_defs.h"  // VCDAddress
 
diff --git a/src/addrcache_test.cc b/src/addrcache_test.cc
index 2e7632d..e313d3e 100644
--- a/src/addrcache_test.cc
+++ b/src/addrcache_test.cc
@@ -15,9 +15,9 @@
 
 #include <config.h>
 #include "addrcache.h"
+#include <limits.h>  // INT_MAX, INT_MIN
 #include <stdint.h>  // uint32_t
-#include <climits>  // INT_MAX, INT_MIN
-#include <cstdlib>  // rand, srand
+#include <stdlib.h>  // rand, srand
 #include <string>
 #include <vector>
 #include "logging.h"
@@ -26,9 +26,6 @@
 #include "vcdiff_defs.h"  // RESULT_ERROR
 
 namespace open_vcdiff {
-
-using std::string;
-
 namespace {
 
 // Provides an address_stream_ buffer and functions to manually encode
@@ -37,6 +34,10 @@
 //
 class VCDiffAddressCacheTest : public testing::Test {
  public:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   VCDiffAddressCacheTest() : decode_position_(NULL),
                              decode_position_end_(NULL),
                              verify_encode_position_(NULL),
diff --git a/src/blockhash.cc b/src/blockhash.cc
index 7dbec8d..d568d52 100644
--- a/src/blockhash.cc
+++ b/src/blockhash.cc
@@ -17,6 +17,7 @@
 #include "blockhash.h"
 #include "compile_assert.h"
 #include <stdint.h>  // uint32_t
+#include <string.h>  // memcpy, memcmp
 #include "logging.h"
 #include "rolling_hash.h"
 
diff --git a/src/blockhash.h b/src/blockhash.h
index 6b3b02e..8b7f948 100644
--- a/src/blockhash.h
+++ b/src/blockhash.h
@@ -21,8 +21,8 @@
 #define OPEN_VCDIFF_BLOCKHASH_H_
 
 #include <config.h>
+#include <stddef.h>  // size_t
 #include <stdint.h>  // uint32_t
-#include <cstddef>  // size_t
 #include <vector>
 
 namespace open_vcdiff {
diff --git a/src/blockhash_test.cc b/src/blockhash_test.cc
index a0ddecb..bc3d975 100644
--- a/src/blockhash_test.cc
+++ b/src/blockhash_test.cc
@@ -15,7 +15,8 @@
 
 #include <config.h>
 #include "blockhash.h"
-#include <climits>  // INT_MIN
+#include <limits.h>  // INT_MIN
+#include <string.h>  // memcpy, memcmp, strlen
 #include <memory>  // auto_ptr
 #include "encodetable.h"
 #include "logging.h"
@@ -379,12 +380,12 @@
                 << " FASTER than BlockCompareWords" << LOG_ENDL;
     }
   }
-#ifdef NDEBUG
+#if defined(NDEBUG) && !defined(VCDIFF_USE_BLOCK_COMPARE_WORDS)
   // Only check timings for optimized build.  There's plenty of margin: this
   // check will fail only if BlockContentsMatch is at least twice as slow as
   // BlockCompareWords.
   EXPECT_GT(time_for_block_compare_words * 2.0, time_for_block_contents_match);
-#endif  // NDEBUG
+#endif  // NDEBUG && !VCDIFF_USE_BLOCK_COMPARE_WORDS
 }
 
 // The two strings passed to BlockHash::MatchingBytesToLeft do have matching
diff --git a/src/decodetable.h b/src/decodetable.h
index 3ba997a..9d9c8a6 100644
--- a/src/decodetable.h
+++ b/src/decodetable.h
@@ -17,8 +17,8 @@
 #define OPEN_VCDIFF_DECODETABLE_H_
 
 #include <config.h>
+#include <stddef.h>     // NULL
 #include <stdint.h>     // int32_t
-#include <cstddef>      // NULL
 #include <memory>       // auto_ptr
 #include "codetable.h"  // VCDiffInstructi...
 #include "logging.h"
diff --git a/src/encodetable.h b/src/encodetable.h
index b14c795..2bb0c72 100644
--- a/src/encodetable.h
+++ b/src/encodetable.h
@@ -17,8 +17,8 @@
 #define OPEN_VCDIFF_ENCODETABLE_H_
 
 #include <config.h>
-#include <stdint.h>             // int32_t
-#include <cstddef>              // size_t
+#include <stddef.h>  // size_t
+#include <stdint.h>  // int32_t
 #include <string>
 #include <vector>
 #include "addrcache.h"
@@ -27,8 +27,6 @@
 
 namespace open_vcdiff {
 
-using std::string;
-
 class OutputStringInterface;
 class VCDiffInstructionMap;
 
@@ -115,6 +113,10 @@
   const std::vector<int>& match_counts() const { return match_counts_; }
 
  private:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   // This is an estimate of the longest match size the encoder expects to find.
   // It is used to determine the initial size of the vector match_counts_.
   // If it is too large, then some space will be wasted on vector elements
diff --git a/src/encodetable_test.cc b/src/encodetable_test.cc
index 50a74ca..e8e7dd7 100644
--- a/src/encodetable_test.cc
+++ b/src/encodetable_test.cc
@@ -17,8 +17,8 @@
 
 #include <config.h>
 #include "encodetable.h"
+#include <string.h>  // strlen
 #include <algorithm>
-#include <cstring>  // strlen
 #include <string>
 #include <vector>
 #include "addrcache.h"  // VCDiffAddressCache::kDefaultNearCacheSize
@@ -31,12 +31,11 @@
 namespace open_vcdiff {
 namespace {
 
-using std::string;
-
 class CodeTableWriterTest : public testing::Test {
  protected:
-  // Remove all of the functions below that are not useful for this
-  // test fixture.
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
 
   CodeTableWriterTest()
       : standard_writer(false),
diff --git a/src/google/output_string.h b/src/google/output_string.h
index 8554e5e..e3f5c2e 100644
--- a/src/google/output_string.h
+++ b/src/google/output_string.h
@@ -16,7 +16,7 @@
 #ifndef OPEN_VCDIFF_OUTPUT_STRING_H_
 #define OPEN_VCDIFF_OUTPUT_STRING_H_
 
-#include <cstddef>  // size_t
+#include <stddef.h>  // size_t
 
 namespace open_vcdiff {
 
diff --git a/src/google/vcdecoder.h b/src/google/vcdecoder.h
index d5aa741..72c2ed7 100644
--- a/src/google/vcdecoder.h
+++ b/src/google/vcdecoder.h
@@ -16,14 +16,12 @@
 #ifndef OPEN_VCDIFF_VCDECODER_H_
 #define OPEN_VCDIFF_VCDECODER_H_
 
-#include <cstddef>  // size_t
+#include <stddef.h>  // size_t
 #include <string>
 #include "google/output_string.h"
 
 namespace open_vcdiff {
 
-using std::string;
-
 class VCDiffStreamingDecoderImpl;
 
 // A streaming decoder class.  Takes a dictionary (source) file and a delta
@@ -96,6 +94,32 @@
   //
   bool FinishDecoding();
 
+  // *** Adjustable parameters ***
+
+  // Specifies the maximum allowable target file size.  If the decoder
+  // encounters a delta file that would cause it to create a target file larger
+  // than this limit, it will log an error and stop decoding.  If the decoder is
+  // applied to delta files whose sizes vary greatly and whose contents can be
+  // trusted, then a value larger than the the default value (64 MB) can be
+  // specified to allow for maximum flexibility.  On the other hand, if the
+  // input data is known never to exceed a particular size, and/or the input
+  // data may be maliciously constructed, a lower value can be supplied in order
+  // to guard against running out of memory or swapping to disk while decoding
+  // an extremely large target file.  The argument must be between 0 and
+  // INT32_MAX (2G); if it is within these bounds, the function will set the
+  // limit and return true.  Otherwise, the function will return false and will
+  // not change the limit.  Setting the limit to 0 will cause all decode
+  // operations of non-empty target files to fail.
+  bool SetMaximumTargetFileSize(size_t new_maximum_target_file_size);
+
+  // Specifies the maximum allowable target *window* size.  (A target file is
+  // composed of zero or more target windows.)  If the decoder encounters a
+  // delta window that would cause it to create a target window larger
+  // than this limit, it will log an error and stop decoding.
+  bool SetMaximumTargetWindowSize(size_t new_maximum_target_window_size);
+
+  // *** Diagnostic interfaces ***
+
   // The decoder can create a version of the output target string with XML tags
   // added to indicate where each section of the decoded text came from.  This
   // can assist in debugging the decoder and/or determining the effectiveness of
@@ -147,6 +171,10 @@
 //
 class VCDiffDecoder {
  public:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   VCDiffDecoder() { }
   ~VCDiffDecoder() { }
 
diff --git a/src/google/vcencoder.h b/src/google/vcencoder.h
index 6faff76..8dc2212 100644
--- a/src/google/vcencoder.h
+++ b/src/google/vcencoder.h
@@ -16,7 +16,7 @@
 #ifndef OPEN_VCDIFF_VCENCODER_H_
 #define OPEN_VCDIFF_VCENCODER_H_
 
-#include <cstddef>  // size_t
+#include <stddef.h>  // size_t
 #include <vector>
 #include "google/output_string.h"
 
diff --git a/src/headerparser.cc b/src/headerparser.cc
index f9b14db..ead4f44 100644
--- a/src/headerparser.cc
+++ b/src/headerparser.cc
@@ -250,13 +250,6 @@
   if (!ParseSize("size of the target window", target_window_length)) {
     return false;
   }
-  if (*target_window_length > kMaxTargetWindowSize) {
-    LOG(ERROR) << "Length of target window (" << (*target_window_length)
-               << ") exceeds limit of " << kMaxTargetWindowSize << " bytes"
-               << LOG_ENDL;
-    return_code_ = RESULT_ERROR;
-    return false;
-  }
   return true;
 }
 
diff --git a/src/headerparser.h b/src/headerparser.h
index 6271f0a..c74fa25 100644
--- a/src/headerparser.h
+++ b/src/headerparser.h
@@ -17,8 +17,8 @@
 #define OPEN_VCDIFF_HEADERPARSER_H_
 
 #include <config.h>
+#include <stddef.h>  // NULL
 #include <stdint.h>  // int32_t, uint32_t
-#include <cstddef>  // NULL
 #include "checksum.h"  // VCDChecksum
 #include "vcdiff_defs.h"  // VCDiffResult
 
@@ -191,14 +191,6 @@
 // or delta window header.
 class VCDiffHeaderParser {
  public:
-  // The maximum allowable size of a target window.  This restricts the amount
-  // of memory that can be allocated by the decoder.  A maliciously formulated
-  // delta file can create a target window of any arbitrary size, so the
-  // decoder needs to be sure that it can allocate this much memory using
-  // std::string::reserve().
-  //
-  static const size_t kMaxTargetWindowSize = 1 << 26;  // 64 MB
-
   // header_start should be the start of the header to be parsed;
   // data_end is the position just after the last byte of available data
   // (which may extend far past the end of the header.)
diff --git a/src/headerparser_test.cc b/src/headerparser_test.cc
index 30a7519..3a7cfa4 100644
--- a/src/headerparser_test.cc
+++ b/src/headerparser_test.cc
@@ -15,7 +15,7 @@
 
 #include <config.h>
 #include "headerparser.h"
-#include <cstdlib>  // rand, srand
+#include <stdlib.h>  // rand, srand
 #include <string>
 #include <vector>
 #include "testing.h"
@@ -24,11 +24,14 @@
 namespace open_vcdiff {
 namespace {  // anonymous
 
-using std::string;
 using std::vector;
 
 class VCDiffHeaderParserTest : public testing::Test {
  protected:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   static const int kTestSize = 1024;
 
   VCDiffHeaderParserTest() : parser(NULL) { }
diff --git a/src/instruction_map.cc b/src/instruction_map.cc
index 9d5fd5f..12cb811 100644
--- a/src/instruction_map.cc
+++ b/src/instruction_map.cc
@@ -15,6 +15,7 @@
 
 #include <config.h>
 #include "instruction_map.h"
+#include <string.h>  // memset
 #include "addrcache.h"
 #include "vcdiff_defs.h"
 
diff --git a/src/instruction_map_test.cc b/src/instruction_map_test.cc
index c505e49..1070db8 100644
--- a/src/instruction_map_test.cc
+++ b/src/instruction_map_test.cc
@@ -26,7 +26,8 @@
 
 class InstructionMapTest : public testing::Test {
  protected:
-  virtual ~InstructionMapTest() { }
+  static void SetUpTestCase();
+  static void TearDownTestCase();
 
   static void AddExerciseOpcode(unsigned char inst1,
                                 unsigned char mode1,
@@ -34,82 +35,12 @@
                                 unsigned char inst2,
                                 unsigned char mode2,
                                 unsigned char size2,
-                                int opcode) {
-    g_exercise_code_table_->inst1[opcode] = inst1;
-    g_exercise_code_table_->mode1[opcode] = mode1;
-    g_exercise_code_table_->size1[opcode] = (inst1 == VCD_NOOP) ? 0 : size1;
-    g_exercise_code_table_->inst2[opcode] = inst2;
-    g_exercise_code_table_->mode2[opcode] = mode2;
-    g_exercise_code_table_->size2[opcode] = (inst2 == VCD_NOOP) ? 0 : size2;
-  }
-
-  static void SetUpTestCase() {
-    g_exercise_code_table_ = new VCDiffCodeTableData;
-    int opcode = 0;
-    for (unsigned char inst_mode1 = 0;
-         inst_mode1 <= VCD_LAST_INSTRUCTION_TYPE + kLastExerciseMode;
-         ++inst_mode1) {
-      unsigned char inst1 = inst_mode1;
-      unsigned char mode1 = 0;
-      if (inst_mode1 > VCD_COPY) {
-        inst1 = VCD_COPY;
-        mode1 = inst_mode1 - VCD_COPY;
-      }
-      for (unsigned char inst_mode2 = 0;
-           inst_mode2 <= VCD_LAST_INSTRUCTION_TYPE + kLastExerciseMode;
-           ++inst_mode2) {
-        unsigned char inst2 = inst_mode2;
-        unsigned char mode2 = 0;
-        if (inst_mode2 > VCD_COPY) {
-          inst2 = VCD_COPY;
-          mode2 = inst_mode2 - VCD_COPY;
-        }
-        AddExerciseOpcode(inst1, mode1, 0, inst2, mode2, 0, opcode++);
-        AddExerciseOpcode(inst1, mode1, 0, inst2, mode2, 255, opcode++);
-        AddExerciseOpcode(inst1, mode1, 255, inst2, mode2, 0, opcode++);
-        AddExerciseOpcode(inst1, mode1, 255, inst2, mode2, 255, opcode++);
-      }
-    }
-    // This is a CHECK rather than an EXPECT because it validates only
-    // the logic of the test, not of the code being tested.
-    CHECK_EQ(VCDiffCodeTableData::kCodeTableSize, opcode);
-
-    EXPECT_TRUE(VCDiffCodeTableData::kDefaultCodeTableData.Validate());
-    EXPECT_TRUE(g_exercise_code_table_->Validate(kLastExerciseMode));
-    default_map = VCDiffInstructionMap::GetDefaultInstructionMap();
-    exercise_map = new VCDiffInstructionMap(*g_exercise_code_table_,
-                                            kLastExerciseMode);
-  }
-
-  static void TearDownTestCase() {
-    delete exercise_map;
-    delete g_exercise_code_table_;
-  }
+                                int opcode);
 
   void VerifyExerciseFirstInstruction(unsigned char expected_opcode,
                                       unsigned char inst,
                                       unsigned char size,
-                                      unsigned char mode) {
-    int found_opcode = exercise_map->LookupFirstOpcode(inst, size, mode);
-    if (g_exercise_code_table_->inst1[found_opcode] == VCD_NOOP) {
-      // The opcode is backwards: (VCD_NOOP, [instruction])
-      EXPECT_GE(expected_opcode, found_opcode);
-      EXPECT_EQ(inst, g_exercise_code_table_->inst2[found_opcode]);
-      EXPECT_EQ(size, g_exercise_code_table_->size2[found_opcode]);
-      EXPECT_EQ(mode, g_exercise_code_table_->mode2[found_opcode]);
-      EXPECT_EQ(VCD_NOOP, g_exercise_code_table_->inst1[found_opcode]);
-      EXPECT_EQ(0, g_exercise_code_table_->size1[found_opcode]);
-      EXPECT_EQ(0, g_exercise_code_table_->mode1[found_opcode]);
-    } else {
-      EXPECT_EQ(expected_opcode, found_opcode);
-      EXPECT_EQ(inst, g_exercise_code_table_->inst1[found_opcode]);
-      EXPECT_EQ(size, g_exercise_code_table_->size1[found_opcode]);
-      EXPECT_EQ(mode, g_exercise_code_table_->mode1[found_opcode]);
-      EXPECT_EQ(VCD_NOOP, g_exercise_code_table_->inst2[found_opcode]);
-      EXPECT_EQ(0, g_exercise_code_table_->size2[found_opcode]);
-      EXPECT_EQ(0, g_exercise_code_table_->mode2[found_opcode]);
-    }
-  }
+                                      unsigned char mode);
 
   void VerifyExerciseSecondInstruction(unsigned char expected_opcode,
                                        unsigned char inst1,
@@ -117,15 +48,7 @@
                                        unsigned char mode1,
                                        unsigned char inst2,
                                        unsigned char size2,
-                                       unsigned char mode2) {
-    int first_opcode = exercise_map->LookupFirstOpcode(inst1, size1, mode1);
-    EXPECT_NE(kNoOpcode, first_opcode);
-    EXPECT_EQ(expected_opcode,
-              exercise_map->LookupSecondOpcode(first_opcode,
-                                               inst2,
-                                               size2,
-                                               mode2));
-  }
+                                       unsigned char mode2);
 
   // This value is designed so that the total number of inst values and modes
   // will equal 8 (VCD_NOOP, VCD_ADD, VCD_RUN, VCD_COPY modes 0 - 4).
@@ -154,6 +77,107 @@
 const VCDiffInstructionMap* InstructionMapTest::default_map = NULL;
 const VCDiffInstructionMap* InstructionMapTest::exercise_map = NULL;
 
+void InstructionMapTest::SetUpTestCase() {
+  g_exercise_code_table_ = new VCDiffCodeTableData;
+  int opcode = 0;
+  for (unsigned char inst_mode1 = 0;
+       inst_mode1 <= VCD_LAST_INSTRUCTION_TYPE + kLastExerciseMode;
+       ++inst_mode1) {
+    unsigned char inst1 = inst_mode1;
+    unsigned char mode1 = 0;
+    if (inst_mode1 > VCD_COPY) {
+      inst1 = VCD_COPY;
+      mode1 = inst_mode1 - VCD_COPY;
+    }
+    for (unsigned char inst_mode2 = 0;
+         inst_mode2 <= VCD_LAST_INSTRUCTION_TYPE + kLastExerciseMode;
+         ++inst_mode2) {
+      unsigned char inst2 = inst_mode2;
+      unsigned char mode2 = 0;
+      if (inst_mode2 > VCD_COPY) {
+        inst2 = VCD_COPY;
+        mode2 = inst_mode2 - VCD_COPY;
+      }
+      AddExerciseOpcode(inst1, mode1, 0, inst2, mode2, 0, opcode++);
+      AddExerciseOpcode(inst1, mode1, 0, inst2, mode2, 255, opcode++);
+      AddExerciseOpcode(inst1, mode1, 255, inst2, mode2, 0, opcode++);
+      AddExerciseOpcode(inst1, mode1, 255, inst2, mode2, 255, opcode++);
+    }
+  }
+  // This is a CHECK rather than an EXPECT because it validates only
+  // the logic of the test, not of the code being tested.
+  CHECK_EQ(VCDiffCodeTableData::kCodeTableSize, opcode);
+
+  EXPECT_TRUE(VCDiffCodeTableData::kDefaultCodeTableData.Validate());
+  EXPECT_TRUE(g_exercise_code_table_->Validate(kLastExerciseMode));
+  default_map = VCDiffInstructionMap::GetDefaultInstructionMap();
+  exercise_map = new VCDiffInstructionMap(*g_exercise_code_table_,
+                                          kLastExerciseMode);
+}
+
+void InstructionMapTest::TearDownTestCase() {
+  delete exercise_map;
+  delete g_exercise_code_table_;
+}
+
+void InstructionMapTest::AddExerciseOpcode(unsigned char inst1,
+                                           unsigned char mode1,
+                                           unsigned char size1,
+                                           unsigned char inst2,
+                                           unsigned char mode2,
+                                           unsigned char size2,
+                                           int opcode) {
+  g_exercise_code_table_->inst1[opcode] = inst1;
+  g_exercise_code_table_->mode1[opcode] = mode1;
+  g_exercise_code_table_->size1[opcode] = (inst1 == VCD_NOOP) ? 0 : size1;
+  g_exercise_code_table_->inst2[opcode] = inst2;
+  g_exercise_code_table_->mode2[opcode] = mode2;
+  g_exercise_code_table_->size2[opcode] = (inst2 == VCD_NOOP) ? 0 : size2;
+}
+
+void InstructionMapTest::VerifyExerciseFirstInstruction(
+    unsigned char expected_opcode,
+    unsigned char inst,
+    unsigned char size,
+    unsigned char mode) {
+  int found_opcode = exercise_map->LookupFirstOpcode(inst, size, mode);
+  if (g_exercise_code_table_->inst1[found_opcode] == VCD_NOOP) {
+    // The opcode is backwards: (VCD_NOOP, [instruction])
+    EXPECT_GE(expected_opcode, found_opcode);
+    EXPECT_EQ(inst, g_exercise_code_table_->inst2[found_opcode]);
+    EXPECT_EQ(size, g_exercise_code_table_->size2[found_opcode]);
+    EXPECT_EQ(mode, g_exercise_code_table_->mode2[found_opcode]);
+    EXPECT_EQ(VCD_NOOP, g_exercise_code_table_->inst1[found_opcode]);
+    EXPECT_EQ(0, g_exercise_code_table_->size1[found_opcode]);
+    EXPECT_EQ(0, g_exercise_code_table_->mode1[found_opcode]);
+  } else {
+    EXPECT_EQ(expected_opcode, found_opcode);
+    EXPECT_EQ(inst, g_exercise_code_table_->inst1[found_opcode]);
+    EXPECT_EQ(size, g_exercise_code_table_->size1[found_opcode]);
+    EXPECT_EQ(mode, g_exercise_code_table_->mode1[found_opcode]);
+    EXPECT_EQ(VCD_NOOP, g_exercise_code_table_->inst2[found_opcode]);
+    EXPECT_EQ(0, g_exercise_code_table_->size2[found_opcode]);
+    EXPECT_EQ(0, g_exercise_code_table_->mode2[found_opcode]);
+  }
+}
+
+void InstructionMapTest::VerifyExerciseSecondInstruction(
+    unsigned char expected_opcode,
+    unsigned char inst1,
+    unsigned char size1,
+    unsigned char mode1,
+    unsigned char inst2,
+    unsigned char size2,
+    unsigned char mode2) {
+  int first_opcode = exercise_map->LookupFirstOpcode(inst1, size1, mode1);
+  EXPECT_NE(kNoOpcode, first_opcode);
+  EXPECT_EQ(expected_opcode,
+            exercise_map->LookupSecondOpcode(first_opcode,
+                                             inst2,
+                                             size2,
+                                             mode2));
+}
+
 TEST_F(InstructionMapTest, DefaultMapLookupFirstNoop) {
   EXPECT_EQ(kNoOpcode, default_map->LookupFirstOpcode(VCD_NOOP, 0, 0));
   EXPECT_EQ(kNoOpcode, default_map->LookupFirstOpcode(VCD_NOOP, 0, 255));
diff --git a/src/logging.cc b/src/logging.cc
index cdcc42b..e472a48 100644
--- a/src/logging.cc
+++ b/src/logging.cc
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 #include <config.h>
+#include <stdlib.h>  // exit
 #include "logging.h"
 
 namespace open_vcdiff {
diff --git a/src/output_string_test.cc b/src/output_string_test.cc
index 86df075..2b655e9 100644
--- a/src/output_string_test.cc
+++ b/src/output_string_test.cc
@@ -24,16 +24,14 @@
 #endif  // HAVE_EXT_ROPE
 
 namespace open_vcdiff {
-
 namespace {
 
-using std::string;
-#ifdef HAVE_EXT_ROPE
-using __gnu_cxx::crope;
-#endif  // HAVE_EXT_ROPE
-
 class OutputStringTest : public testing::Test {
  public:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   OutputStringTest() : string_("ab"), output_string_(&string_) { }
 
   virtual ~OutputStringTest() { }
@@ -77,6 +75,8 @@
 #ifdef HAVE_EXT_ROPE
 class OutputCRopeTest : public testing::Test {
  public:
+  typedef __gnu_cxx::crope crope;
+
   OutputCRopeTest() : crope_("ab"), output_crope_(&crope_) { }
 
   virtual ~OutputCRopeTest() { }
diff --git a/src/rolling_hash_test.cc b/src/rolling_hash_test.cc
index 1a7da9a..438aec9 100644
--- a/src/rolling_hash_test.cc
+++ b/src/rolling_hash_test.cc
@@ -16,7 +16,7 @@
 #include <config.h>
 #include "rolling_hash.h"
 #include <stdint.h>  // uint32_t
-#include <cstdlib>  // rand, srand
+#include <stdlib.h>  // rand, srand
 #include <vector>
 #include "testing.h"
 
diff --git a/src/testing.h b/src/testing.h
index 205871b..3227fd8 100644
--- a/src/testing.h
+++ b/src/testing.h
@@ -17,10 +17,10 @@
 #define OPEN_VCDIFF_TESTING_H_
 
 #include <config.h>
-#include <stdint.h>  // int64_t, uint64_t
+#include <assert.h>
+#include <stdint.h>  // int64_t
+#include <stdlib.h>  // rand
 #include <time.h>  // gettimeofday
-#include <cassert>
-#include <cstdlib>  // rand
 #include "gtest/gtest.h"
 
 #ifdef HAVE_SYS_TIME_H
diff --git a/src/varint_bigendian.cc b/src/varint_bigendian.cc
index 4dbf7bb..5098ed2 100644
--- a/src/varint_bigendian.cc
+++ b/src/varint_bigendian.cc
@@ -16,14 +16,13 @@
 #include <config.h>
 #include "varint_bigendian.h"
 #include <stdint.h>  // int32_t, int64_t
+#include <string.h>  // memcpy
 #include <string>
 #include "logging.h"
 #include "google/output_string.h"
 
 namespace open_vcdiff {
 
-using std::string;
-
 template<> const int32_t VarintBE<int32_t>::kMaxVal = 0x7FFFFFFF;
 template<> const int64_t VarintBE<int64_t>::kMaxVal = 0x7FFFFFFFFFFFFFFFULL;
 
diff --git a/src/varint_bigendian.h b/src/varint_bigendian.h
index 34e5035..d5b63d5 100644
--- a/src/varint_bigendian.h
+++ b/src/varint_bigendian.h
@@ -42,8 +42,6 @@
 
 namespace open_vcdiff {
 
-using std::string;
-
 class OutputStringInterface;
 
 // This helper class is needed in order to ensure that
@@ -76,6 +74,10 @@
 template <typename SignedIntegerType>
 class VarintBE {  // BE stands for Big-Endian
  public:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   // The maximum positive value represented by a SignedIntegerType.
   static const SignedIntegerType kMaxVal;
 
diff --git a/src/varint_bigendian_test.cc b/src/varint_bigendian_test.cc
index 83e180e..6eb8ff0 100644
--- a/src/varint_bigendian_test.cc
+++ b/src/varint_bigendian_test.cc
@@ -15,7 +15,8 @@
 
 #include <config.h>
 #include "varint_bigendian.h"
-#include <cstdlib>  // rand, srand
+#include <stdlib.h>  // rand, srand
+#include <string.h>  // strlen
 #include <string>
 #include <vector>
 #include "logging.h"
@@ -24,10 +25,12 @@
 namespace open_vcdiff {
 namespace {
 
-using std::string;
-
 class VarintBETestCommon : public testing::Test {
  protected:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   VarintBETestCommon()
       : varint_buf_(VarintBE<int64_t>::kMaxBytes),
         verify_encoded_byte_index_(0),
diff --git a/src/vcdecoder.cc b/src/vcdecoder.cc
index b5ce997..02afa87 100644
--- a/src/vcdecoder.cc
+++ b/src/vcdecoder.cc
@@ -29,8 +29,9 @@
 
 #include <config.h>
 #include "google/vcdecoder.h"
+#include <stddef.h>  // size_t, ptrdiff_t
 #include <stdint.h>  // int32_t
-#include <cstddef>  // size_t, ptrdiff_t
+#include <string.h>  // memcpy, memset
 #include <memory>  // auto_ptr
 #include <string>
 #include "addrcache.h"
@@ -47,8 +48,6 @@
 
 namespace {
 
-using std::string;
-
 enum VCDiffAnnotationType {
   VCD_ANNOTATION_LITERAL,
   VCD_ANNOTATION_DMATCH,
@@ -112,6 +111,10 @@
 //
 class VCDiffDeltaFileWindow {
  public:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   VCDiffDeltaFileWindow();
   ~VCDiffDeltaFileWindow();
 
@@ -139,7 +142,7 @@
   // is undefined; otherwise, parseable_chunk->Advance() is called to point to
   // the input data position just after the data that has been decoded.
   //
-  // If expected_target_bytes is not set to kUnlimitedBytes, then the decoder
+  // If planned_target_file_size is not set to kUnlimitedBytes, then the decoder
   // expects *exactly* this number of target bytes to be decoded from one or
   // more delta file windows.  If this number is met exactly after finishing a
   // delta window, this function will return RESULT_SUCCESS without processing
@@ -343,9 +346,34 @@
   void operator=(const VCDiffDeltaFileWindow&);
 };
 
+// *** Inline methods for VCDiffDeltaFileWindow
+
+inline VCDiffDeltaFileWindow::VCDiffDeltaFileWindow() : parent_(NULL) {
+  Reset();
+}
+
+inline VCDiffDeltaFileWindow::~VCDiffDeltaFileWindow() { }
+
+inline void VCDiffDeltaFileWindow::Init(VCDiffStreamingDecoderImpl* parent) {
+  parent_ = parent;
+}
+
 class VCDiffStreamingDecoderImpl {
  public:
-  // A constant that is the default value for expected_target_bytes_,
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
+  // The default maximum target file size (and target window size) if
+  // SetMaximumTargetFileSize() is not called.
+  static const size_t kDefaultMaximumTargetFileSize = 67108864U;  // 64 MB
+
+  // The largest value that can be passed to SetMaximumTargetFileSize() or
+  // SetMaximumTargetWindowSize().  Using a larger value will result in an
+  // error.
+  static const size_t kTargetSizeLimit = 2147483647U;  // INT32_MAX
+
+  // A constant that is the default value for planned_target_file_size_,
   // indicating that the decoder does not have an expected length
   // for the target data.
   static const size_t kUnlimitedBytes = static_cast<size_t>(-3);
@@ -390,66 +418,67 @@
   //
   bool AllowChecksum() const { return vcdiff_version_code_ == 'S'; }
 
-  // See description of expected_target_bytes_, below.
-  bool HasTargetByteLimit() const {
-    return expected_target_bytes_ != kUnlimitedBytes;
-  }
-
-  void SetTargetByteLimit(size_t expected_target_bytes) {
-    expected_target_bytes_ = expected_target_bytes;
-  }
-
-  // Checks to see whether the decoded target data has reached the expected
-  // size.
-  bool MetTargetByteLimit() const {
-    if (!HasTargetByteLimit()) {
+  bool SetMaximumTargetFileSize(size_t new_maximum_target_file_size) {
+    if (new_maximum_target_file_size > kTargetSizeLimit) {
+      LOG(ERROR) << "Specified maximum target file size "
+                 << new_maximum_target_file_size << " exceeds limit of "
+                 << kTargetSizeLimit << " bytes" << LOG_ENDL;
       return false;
     }
-    // The target byte limit should not have been exceeded, because each target
-    // window size is checked against that limit in ReadHeader(), and
+    maximum_target_file_size_ = new_maximum_target_file_size;
+    return true;
+  }
+
+  bool SetMaximumTargetWindowSize(size_t new_maximum_target_window_size) {
+    if (new_maximum_target_window_size > kTargetSizeLimit) {
+      LOG(ERROR) << "Specified maximum target window size "
+                 << new_maximum_target_window_size << " exceeds limit of "
+                 << kTargetSizeLimit << " bytes" << LOG_ENDL;
+      return false;
+    }
+    maximum_target_window_size_ = new_maximum_target_window_size;
+    return true;
+  }
+
+  // See description of planned_target_file_size_, below.
+  bool HasPlannedTargetFileSize() const {
+    return planned_target_file_size_ != kUnlimitedBytes;
+  }
+
+  void SetPlannedTargetFileSize(size_t planned_target_file_size) {
+    planned_target_file_size_ = planned_target_file_size;
+  }
+
+  // Checks to see whether the decoded target data has reached its planned size.
+  bool ReachedPlannedTargetFileSize() const {
+    if (!HasPlannedTargetFileSize()) {
+      return false;
+    }
+    // The planned target file size should not have been exceeded.
+    // TargetWindowWouldExceedSizeLimits() ensures that the advertised size of
+    // each target window would not make the target file exceed that limit, and
     // DecodeBody() will return RESULT_ERROR if the actual decoded output ever
     // exceeds the advertised target window size.
-    if (decoded_target_.size() > expected_target_bytes_) {
+    if (decoded_target_.size() > planned_target_file_size_) {
       LOG(DFATAL) << "Internal error: Decoded data size "
                   << decoded_target_.size()
-                  << " exceeds target byte limit "
-                  << expected_target_bytes_ << LOG_ENDL;
+                  << " exceeds planned target file size "
+                  << planned_target_file_size_ << LOG_ENDL;
       return true;
     }
-    return decoded_target_.size() == expected_target_bytes_;
+    return decoded_target_.size() == planned_target_file_size_;
   }
 
   // Checks to see whether adding a new target window of the specified size
-  // would exceed the expected target size.  If so, logs an error and returns
-  // true; otherwise, returns false.
-  bool TargetWindowWouldExceedTargetByteLimit(size_t window_size) const {
-    if (!HasTargetByteLimit()) {
-      return false;
-    }
-    // The logical expression to check would be:
-    //
-    //   decoded_target_.size() + target_bytes_to_add > expected_target_bytes_
-    //
-    // but the addition might cause an integer overflow if target_bytes_to_add
-    // is very large.  So it is better to check target_bytes_to_add against
-    // the remaining expected target bytes.
-    size_t remaining_expected_target_bytes =
-        expected_target_bytes_ - decoded_target_.size();
-    if (window_size > remaining_expected_target_bytes) {
-      LOG(ERROR) << "Length of target window (" << window_size
-                 << " bytes) plus previous windows (" << decoded_target_.size()
-                 << " bytes) would exceed expected size of "
-                 << expected_target_bytes_ << " bytes" << LOG_ENDL;
-      return true;
-    } else {
-      return false;
-    }
-  }
+  // would exceed the planned target file size, the maximum target file size,
+  // or the maximum target window size.  If so, logs an error and returns true;
+  // otherwise, returns false.
+  bool TargetWindowWouldExceedSizeLimits(size_t window_size) const;
 
   // Returns the amount of input data passed to the last DecodeChunk()
   // that was not consumed by the decoder.  This is essential if
-  // SetExpectedTargetBytes() is being used, in order to preserve
-  // the input data stream beyond the expected encoding.
+  // SetPlannedTargetFileSize() is being used, in order to preserve the
+  // remaining input data stream once the planned target file has been decoded.
   size_t GetUnconsumedDataSize() const {
     return unparsed_bytes_.size();
   }
@@ -471,8 +500,8 @@
       // The decoder is in the middle of parsing an interleaved format delta
       // window.
       return false;
-    } else if (MetTargetByteLimit()) {
-      // The decoder found exactly the expected number of bytes.  In this case
+    } else if (ReachedPlannedTargetFileSize()) {
+      // The decoder found exactly the planned number of bytes.  In this case
       // it is OK for unparsed_bytes_ to be non-empty; it contains the leftover
       // data after the end of the delta file.
       return true;
@@ -599,7 +628,11 @@
   // stop processing the embedded data once the entire code table has
   // been decoded, and treat the rest of the available data as part
   // of the enclosing delta file.
-  size_t expected_target_bytes_;
+  size_t planned_target_file_size_;
+
+  size_t maximum_target_file_size_;
+
+  size_t maximum_target_window_size_;
 
   // This string will always be empty until EnableAnnotatedOutput() is called,
   // at which point it will start to accumulate annotated delta windows each
@@ -620,7 +653,12 @@
 
 // *** Methods for VCDiffStreamingDecoderImpl
 
-VCDiffStreamingDecoderImpl::VCDiffStreamingDecoderImpl() {
+const size_t VCDiffStreamingDecoderImpl::kDefaultMaximumTargetFileSize;
+const size_t VCDiffStreamingDecoderImpl::kUnlimitedBytes;
+
+VCDiffStreamingDecoderImpl::VCDiffStreamingDecoderImpl()
+    : maximum_target_file_size_(kDefaultMaximumTargetFileSize),
+      maximum_target_window_size_(kDefaultMaximumTargetFileSize) {
   delta_window_.Init(this);
   Reset();
 }
@@ -633,7 +671,7 @@
   dictionary_ptr_ = NULL;
   dictionary_size_ = 0;
   vcdiff_version_code_ = '\0';
-  expected_target_bytes_ = kUnlimitedBytes;
+  planned_target_file_size_ = kUnlimitedBytes;
   addr_cache_.reset();
   custom_code_table_.reset();
   custom_code_table_decoder_.reset();
@@ -779,7 +817,8 @@
       reinterpret_cast<const char*>(
           &VCDiffCodeTableData::kDefaultCodeTableData),
       sizeof(VCDiffCodeTableData::kDefaultCodeTableData));
-  custom_code_table_decoder_->SetTargetByteLimit(sizeof(*custom_code_table_));
+  custom_code_table_decoder_->SetPlannedTargetFileSize(
+      sizeof(*custom_code_table_));
   return static_cast<int>(header_parser.ParsedSize());
 }
 
@@ -808,10 +847,10 @@
     return RESULT_ERROR;
   }
   if (custom_code_table_string_.length() != sizeof(*custom_code_table_)) {
-    LOG(DFATAL) << "Decoded custom code table size "
+    LOG(DFATAL) << "Decoded custom code table size ("
                 << custom_code_table_string_.length()
-                << " does not match expected size "
-                << sizeof(*custom_code_table_) << LOG_ENDL;
+                << ") does not match size of a code table ("
+                << sizeof(*custom_code_table_) << ")" << LOG_ENDL;
     return RESULT_ERROR;
   }
   memcpy(custom_code_table_.get(),
@@ -829,6 +868,10 @@
 
 class TrackNewOutputText {
  public:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   explicit TrackNewOutputText(const string& decoded_target)
       : decoded_target_(decoded_target),
       initial_decoded_target_size_(decoded_target.size()) { }
@@ -912,18 +955,46 @@
   return success;
 }
 
+bool VCDiffStreamingDecoderImpl::TargetWindowWouldExceedSizeLimits(
+    size_t window_size) const {
+  if (window_size > maximum_target_window_size_) {
+    LOG(ERROR) << "Length of target window (" << window_size
+               << ") exceeds limit of " << maximum_target_window_size_
+               << " bytes" << LOG_ENDL;
+    return true;
+  }
+  if (HasPlannedTargetFileSize()) {
+    // The logical expression to check would be:
+    //
+    //   decoded_target_.size() + window_size > planned_target_file_size_
+    //
+    // but the addition might cause an integer overflow if target_bytes_to_add
+    // is very large.  So it is better to check target_bytes_to_add against
+    // the remaining planned target bytes.
+    size_t remaining_planned_target_file_size =
+        planned_target_file_size_ - decoded_target_.size();
+    if (window_size > remaining_planned_target_file_size) {
+      LOG(ERROR) << "Length of target window (" << window_size
+                 << " bytes) plus previous windows (" << decoded_target_.size()
+                 << " bytes) would exceed planned size of "
+                 << planned_target_file_size_ << " bytes" << LOG_ENDL;
+      return true;
+    }
+  }
+  size_t remaining_maximum_target_bytes =
+      maximum_target_file_size_ - decoded_target_.size();
+  if (window_size > remaining_maximum_target_bytes) {
+    LOG(ERROR) << "Length of target window (" << window_size
+               << " bytes) plus previous windows (" << decoded_target_.size()
+               << " bytes) would exceed maximum target file size of "
+               << maximum_target_file_size_ << " bytes" << LOG_ENDL;
+    return true;
+  }
+  return false;
+}
+
 // *** Methods for VCDiffDeltaFileWindow
 
-inline VCDiffDeltaFileWindow::VCDiffDeltaFileWindow() : parent_(NULL) {
-  Reset();
-}
-
-inline VCDiffDeltaFileWindow::~VCDiffDeltaFileWindow() { }
-
-inline void VCDiffDeltaFileWindow::Init(VCDiffStreamingDecoderImpl* parent) {
-  parent_ = parent;
-}
-
 void VCDiffDeltaFileWindow::Reset() {
   found_header_ = false;
 
@@ -1031,8 +1102,8 @@
   if (!header_parser.ParseWindowLengths(&target_window_length_)) {
     return header_parser.GetResult();
   }
-  if (parent_->TargetWindowWouldExceedTargetByteLimit(target_window_length_)) {
-    // An error has been logged by TargetWindowWouldExceedTargetByteLimit().
+  if (parent_->TargetWindowWouldExceedSizeLimits(target_window_length_)) {
+    // An error has been logged by TargetWindowWouldExceedSizeLimits().
     return RESULT_ERROR;
   }
   header_parser.ParseDeltaIndicator();
@@ -1341,8 +1412,8 @@
     AppendAnnotatedOutput(parent_->annotated_output());
     // Get ready to read a new delta window
     Reset();
-    if (parent_->MetTargetByteLimit()) {
-      // Found exactly the length expected.  Stop decoding.
+    if (parent_->ReachedPlannedTargetFileSize()) {
+      // Found exactly the length we expected.  Stop decoding.
       return RESULT_SUCCESS;
     }
   }
@@ -1371,6 +1442,16 @@
   return impl_->FinishDecoding();
 }
 
+bool VCDiffStreamingDecoder::SetMaximumTargetFileSize(
+    size_t new_maximum_target_file_size) {
+  return impl_->SetMaximumTargetFileSize(new_maximum_target_file_size);
+}
+
+bool VCDiffStreamingDecoder::SetMaximumTargetWindowSize(
+    size_t new_maximum_target_window_size) {
+  return impl_->SetMaximumTargetWindowSize(new_maximum_target_window_size);
+}
+
 void VCDiffStreamingDecoder::EnableAnnotatedOutput() {
   impl_->EnableAnnotatedOutput();
 }
diff --git a/src/vcdecoder_test1.cc b/src/vcdecoder1_test.cc
similarity index 94%
rename from src/vcdecoder_test1.cc
rename to src/vcdecoder1_test.cc
index f0dae41..7c825d7 100644
--- a/src/vcdecoder_test1.cc
+++ b/src/vcdecoder1_test.cc
@@ -22,8 +22,6 @@
 
 namespace open_vcdiff {
 
-using std::string;
-
 TEST_F(VCDiffStandardDecoderTest, DecodeHeaderOnly) {
   decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
   EXPECT_TRUE(decoder_.DecodeChunk(delta_file_header_.data(),
@@ -78,6 +76,44 @@
   EXPECT_EQ("", output_);
 }
 
+TEST_F(VCDiffStandardDecoderTest, TargetMatchesWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_TRUE(decoder_.DecodeChunk(delta_file_.data(),
+                                   delta_file_.size(),
+                                   &output_));
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffStandardDecoderTest, TargetMatchesFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_TRUE(decoder_.DecodeChunk(delta_file_.data(),
+                                   delta_file_.size(),
+                                   &output_));
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffStandardDecoderTest, TargetExceedsWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_FALSE(decoder_.DecodeChunk(delta_file_.data(),
+                                    delta_file_.size(),
+                                    &output_));
+  EXPECT_EQ("", output_);
+}
+
+TEST_F(VCDiffStandardDecoderTest, TargetExceedsFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_FALSE(decoder_.DecodeChunk(delta_file_.data(),
+                                    delta_file_.size(),
+                                    &output_));
+  EXPECT_EQ("", output_);
+}
+
 // Fuzz bits to make sure decoder does not violently crash.
 // This test has no expected behavior except that no crashes should occur.
 // In some cases, changing bits will still decode to the correct target;
diff --git a/src/vcdecoder_test2.cc b/src/vcdecoder2_test.cc
similarity index 95%
rename from src/vcdecoder_test2.cc
rename to src/vcdecoder2_test.cc
index a051b12..7f24a78 100644
--- a/src/vcdecoder_test2.cc
+++ b/src/vcdecoder2_test.cc
@@ -15,15 +15,12 @@
 
 #include <config.h>
 #include "google/vcdecoder.h"
-#include <string>
 #include "testing.h"
 #include "vcdecoder_test.h"
 #include "vcdiff_defs.h"  // VCD_SOURCE
 
 namespace open_vcdiff {
 
-using std::string;
-
 // These are the same tests as for VCDiffStandardDecoderTest, with the added
 // complication that instead of calling DecodeChunk() once with the entire data
 // set, DecodeChunk() is called once for each byte of input.  This is intended
@@ -95,6 +92,54 @@
   EXPECT_GE(expected_target_.size(), output_.size());
 }
 
+TEST_F(VCDiffStandardDecoderTestByteByByte, TargetMatchesWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  for (size_t i = 0; i < delta_file_.size(); ++i) {
+    EXPECT_TRUE(decoder_.DecodeChunk(&delta_file_[i], 1, &output_));
+  }
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffStandardDecoderTestByteByByte, TargetMatchesFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  for (size_t i = 0; i < delta_file_.size(); ++i) {
+    EXPECT_TRUE(decoder_.DecodeChunk(&delta_file_[i], 1, &output_));
+  }
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffStandardDecoderTestByteByByte, TargetExceedsWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  bool failed = false;
+  for (size_t i = 0; i < delta_file_.size(); ++i) {
+    if (!decoder_.DecodeChunk(&delta_file_[i], 1, &output_)) {
+      failed = true;
+      break;
+    }
+  }
+  EXPECT_TRUE(failed);
+  EXPECT_EQ("", output_);
+}
+
+TEST_F(VCDiffStandardDecoderTestByteByByte, TargetExceedsFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  bool failed = false;
+  for (size_t i = 0; i < delta_file_.size(); ++i) {
+    if (!decoder_.DecodeChunk(&delta_file_[i], 1, &output_)) {
+      failed = true;
+      break;
+    }
+  }
+  EXPECT_TRUE(failed);
+  EXPECT_EQ("", output_);
+}
+
 // Fuzz bits to make sure decoder does not violently crash.
 // This test has no expected behavior except that no crashes should occur.
 // In some cases, changing bits will still decode to the correct target;
diff --git a/src/vcdecoder_test3.cc b/src/vcdecoder3_test.cc
similarity index 92%
rename from src/vcdecoder_test3.cc
rename to src/vcdecoder3_test.cc
index c470d0d..3a0673c 100644
--- a/src/vcdecoder_test3.cc
+++ b/src/vcdecoder3_test.cc
@@ -15,8 +15,8 @@
 
 #include <config.h>
 #include "google/vcdecoder.h"
-#include <cstdlib>  // free, posix_memalign
-#include <cstring>  // memcpy
+#include <stdlib.h>  // free, posix_memalign
+#include <string.h>  // memcpy
 #include <string>
 #include "testing.h"
 #include "varint_bigendian.h"
@@ -38,8 +38,6 @@
 
 namespace open_vcdiff {
 
-using std::string;
-
 // Test headers, valid and invalid.
 
 TEST_F(VCDiffInterleavedDecoderTest, DecodeHeaderOnly) {
@@ -159,6 +157,44 @@
   EXPECT_GE(expected_target_.size(), output_.size());
 }
 
+TEST_F(VCDiffInterleavedDecoderTest, TargetMatchesWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_TRUE(decoder_.DecodeChunk(delta_file_.data(),
+                                   delta_file_.size(),
+                                   &output_));
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffInterleavedDecoderTest, TargetMatchesFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_TRUE(decoder_.DecodeChunk(delta_file_.data(),
+                                   delta_file_.size(),
+                                   &output_));
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffInterleavedDecoderTest, TargetExceedsWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_FALSE(decoder_.DecodeChunk(delta_file_.data(),
+                                    delta_file_.size(),
+                                    &output_));
+  EXPECT_EQ("", output_);
+}
+
+TEST_F(VCDiffInterleavedDecoderTest, TargetExceedsFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_FALSE(decoder_.DecodeChunk(delta_file_.data(),
+                                    delta_file_.size(),
+                                    &output_));
+  EXPECT_EQ("", output_);
+}
+
 // Fuzz bits to make sure decoder does not violently crash.
 // This test has no expected behavior except that no crashes should occur.
 // In some cases, changing bits will still decode to the correct target;
@@ -659,6 +695,54 @@
   EXPECT_GE(expected_target_.size(), output_.size());
 }
 
+TEST_F(VCDiffInterleavedDecoderTestByteByByte, TargetMatchesWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  for (size_t i = 0; i < delta_file_.size(); ++i) {
+    EXPECT_TRUE(decoder_.DecodeChunk(&delta_file_[i], 1, &output_));
+  }
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffInterleavedDecoderTestByteByByte, TargetMatchesFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  for (size_t i = 0; i < delta_file_.size(); ++i) {
+    EXPECT_TRUE(decoder_.DecodeChunk(&delta_file_[i], 1, &output_));
+  }
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffInterleavedDecoderTestByteByByte, TargetExceedsWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  bool failed = false;
+  for (size_t i = 0; i < delta_file_.size(); ++i) {
+    if (!decoder_.DecodeChunk(&delta_file_[i], 1, &output_)) {
+      failed = true;
+      break;
+    }
+  }
+  EXPECT_TRUE(failed);
+  EXPECT_EQ("", output_);
+}
+
+TEST_F(VCDiffInterleavedDecoderTestByteByByte, TargetExceedsFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  bool failed = false;
+  for (size_t i = 0; i < delta_file_.size(); ++i) {
+    if (!decoder_.DecodeChunk(&delta_file_[i], 1, &output_)) {
+      failed = true;
+      break;
+    }
+  }
+  EXPECT_TRUE(failed);
+  EXPECT_EQ("", output_);
+}
+
 // Fuzz bits to make sure decoder does not violently crash.
 // This test has no expected behavior except that no crashes should occur.
 // In some cases, changing bits will still decode to the correct target;
diff --git a/src/vcdecoder_test4.cc b/src/vcdecoder4_test.cc
similarity index 94%
rename from src/vcdecoder_test4.cc
rename to src/vcdecoder4_test.cc
index adb99e8..a77aa46 100644
--- a/src/vcdecoder_test4.cc
+++ b/src/vcdecoder4_test.cc
@@ -24,8 +24,6 @@
 namespace open_vcdiff {
 namespace {
 
-using std::string;
-
 // Use the interleaved file header with the standard encoding.  Should work.
 class VCDiffDecoderInterleavedAllowedButNotUsed
     : public VCDiffStandardDecoderTest {
@@ -117,6 +115,8 @@
 // Each delta instruction appears in its own window.
 class VCDiffStandardWindowDecoderTest : public VCDiffDecoderTest {
  protected:
+  static const size_t kWindow2Size = 61;
+
   VCDiffStandardWindowDecoderTest();
   virtual ~VCDiffStandardWindowDecoderTest() {}
 
@@ -125,6 +125,8 @@
   static const char kWindowBody[];
 };
 
+const size_t VCDiffStandardWindowDecoderTest::kWindow2Size;
+
 const char VCDiffStandardWindowDecoderTest::kWindowBody[] = {
 // Window 1:
     VCD_SOURCE,  // Win_Indicator: take source from dictionary
@@ -146,7 +148,7 @@
 // Window 2:
     0x00,  // Win_Indicator: No source segment (ADD only)
     0x44,  // Length of the delta encoding
-    0x3D,  // Size of the target window (61)
+    static_cast<char>(kWindow2Size),  // Size of the target window (61)
     0x00,  // Delta_indicator (no compression)
     0x3D,  // length of data for ADDs and RUNs
     0x02,  // length of instructions section
@@ -337,6 +339,47 @@
   }
 }
 
+// For the window test, the maximum target window size is much smaller than the
+// target file size.  (The largest window is Window 2, with 61 target bytes.)
+// Use the minimum values possible.
+TEST_F(VCDiffStandardWindowDecoderTest, TargetMatchesWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(kWindow2Size);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_TRUE(decoder_.DecodeChunk(delta_file_.data(),
+                                   delta_file_.size(),
+                                   &output_));
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffStandardWindowDecoderTest, TargetMatchesFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size());
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_TRUE(decoder_.DecodeChunk(delta_file_.data(),
+                                   delta_file_.size(),
+                                   &output_));
+  EXPECT_TRUE(decoder_.FinishDecoding());
+  EXPECT_EQ(expected_target_, output_);
+}
+
+TEST_F(VCDiffStandardWindowDecoderTest, TargetExceedsWindowSizeLimit) {
+  decoder_.SetMaximumTargetWindowSize(kWindow2Size - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_FALSE(decoder_.DecodeChunk(delta_file_.data(),
+                                    delta_file_.size(),
+                                    &output_));
+  EXPECT_EQ("", output_);
+}
+
+TEST_F(VCDiffStandardWindowDecoderTest, TargetExceedsFileSizeLimit) {
+  decoder_.SetMaximumTargetFileSize(expected_target_.size() - 1);
+  decoder_.StartDecoding(dictionary_.data(), dictionary_.size());
+  EXPECT_FALSE(decoder_.DecodeChunk(delta_file_.data(),
+                                    delta_file_.size(),
+                                    &output_));
+  EXPECT_EQ("", output_);
+}
+
 typedef VCDiffStandardWindowDecoderTest
     VCDiffStandardWindowDecoderTestByteByByte;
 TEST_F(VCDiffStandardWindowDecoderTestByteByByte, Decode) {
diff --git a/src/vcdecoder_test.cc b/src/vcdecoder_test.cc
index 10ae599..0faa248 100644
--- a/src/vcdecoder_test.cc
+++ b/src/vcdecoder_test.cc
@@ -15,7 +15,7 @@
 
 #include <config.h>
 #include "vcdecoder_test.h"
-#include <string>
+#include <string.h>  // strlen
 #include "checksum.h"
 #include "codetable.h"
 #include "testing.h"
@@ -24,8 +24,6 @@
 
 namespace open_vcdiff {
 
-using std::string;
-
 const char VCDiffDecoderTest::kStandardFileHeader[] = {
     0xD6,  // 'V' | 0x80
     0xC3,  // 'C' | 0x80
diff --git a/src/vcdecoder_test.h b/src/vcdecoder_test.h
index f3c5195..3748c0d 100644
--- a/src/vcdecoder_test.h
+++ b/src/vcdecoder_test.h
@@ -29,6 +29,10 @@
 // overwritten by each specific decoder test as needed.
 class VCDiffDecoderTest : public testing::Test {
  protected:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   static const char kDictionary[];
   static const char kExpectedTarget[];
   static const char kExpectedAnnotatedTarget[];
diff --git a/src/vcdiff_defs.h b/src/vcdiff_defs.h
index ed35f1f..b59af53 100644
--- a/src/vcdiff_defs.h
+++ b/src/vcdiff_defs.h
@@ -22,8 +22,8 @@
 #define OPEN_VCDIFF_VCDIFF_DEFS_H_
 
 #include <config.h>
+#include <limits.h>             // UCHAR_MAX
 #include <stdint.h>             // int32_t
-#include <climits>              // UCHAR_MAX
 
 namespace open_vcdiff {
 
diff --git a/src/vcdiff_main.cc b/src/vcdiff_main.cc
index 714e6f8..e8388a4 100644
--- a/src/vcdiff_main.cc
+++ b/src/vcdiff_main.cc
@@ -16,10 +16,10 @@
 // A command-line interface to the open-vcdiff library.
 
 #include <config.h>
-#include <cassert>
-#include <cerrno>
-#include <cstdio>
-#include <cstring>  // strerror
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>  // strerror
 #include <memory>
 #include <string>
 #include <vector>
@@ -28,7 +28,9 @@
 #include "google/vcdecoder.h"
 #include "google/vcencoder.h"
 
+#ifndef VCDIFF_HAS_GLOBAL_STRING
 using std::string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
 using google::GetCommandLineFlagInfoOrDie;
 using google::ShowUsageWithFlagsRestrict;
 
@@ -55,6 +57,10 @@
 DEFINE_bool(stats, false, "Report compression percentage");
 DEFINE_bool(target_matches, false, "Find duplicate strings in target data"
                                    " as well as dictionary data");
+DEFINE_uint64(max_target_file_size, kMaxBufferSize,
+              "Maximum target file size allowed by decoder");
+DEFINE_uint64(max_target_window_size, kMaxBufferSize,
+              "Maximum target window size allowed by decoder");
 
 static const char* const kUsageString =
     " {encode | delta | decode | patch }[ <options> ]\n"
@@ -426,6 +432,8 @@
   }
 
   open_vcdiff::VCDiffStreamingDecoder decoder;
+  decoder.SetMaximumTargetFileSize(FLAGS_max_target_file_size);
+  decoder.SetMaximumTargetWindowSize(FLAGS_max_target_window_size);
   string output;
   size_t input_size = 0;
   size_t output_size = 0;
@@ -479,6 +487,8 @@
   }
 
   open_vcdiff::VCDiffStreamingDecoder decoder;
+  decoder.SetMaximumTargetFileSize(FLAGS_max_target_file_size);
+  decoder.SetMaximumTargetWindowSize(FLAGS_max_target_window_size);
   string output;
   size_t input_size = 0;
   size_t output_size = 0;
diff --git a/src/vcdiff_test.sh b/src/vcdiff_test.sh
new file mode 100755
index 0000000..19cd93d
--- /dev/null
+++ b/src/vcdiff_test.sh
@@ -0,0 +1,476 @@
+#!/bin/bash
+#
+# Copyright 2008 Google Inc.
+# Author: Lincoln Smith
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# The caller should set the environment variable $srcdir to the root directory
+# of the open-vcdiff package.  ($srcdir is automatically provided by Automake
+# when this script is run by "make check".)
+
+# Find input files
+VCDIFF=./vcdiff
+# These options are only needed for the encoder;
+# the decoder will recognize the interleaved and checksum formats
+# without needing to specify any options.
+VCD_OPTIONS="-interleaved -checksum"
+DICTIONARY_FILE=$srcdir/testdata/configure.ac.v0.1
+TARGET_FILE=$srcdir/testdata/configure.ac.v0.2
+TEST_TMPDIR=${TMPDIR-/tmp}
+DELTA_FILE=$TEST_TMPDIR/configure.ac.vcdiff
+OUTPUT_TARGET_FILE=$TEST_TMPDIR/configure.ac.output
+MALICIOUS_ENCODING=$srcdir/testdata/allocates_4gb.vcdiff
+
+# vcdiff with no arguments shows usage information & error result
+$VCDIFF \
+&& { echo "vcdiff with no arguments should fail, but succeeded"; \
+     exit 1; }
+echo "Test 1 ok";
+
+# vcdiff with three arguments but without "encode" or "decode"
+# shows usage information & error result
+$VCDIFF $VCD_OPTIONS \
+        -dictionary $DICTIONARY_FILE -target $TARGET_FILE -delta $DELTA_FILE \
+&& { echo "vcdiff without operation argument should fail, but succeeded"; \
+     exit 1; }
+echo "Test 2 ok";
+
+# vcdiff with all three arguments.  Verify that output file matches target file
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $DICTIONARY_FILE \
+               -target $TARGET_FILE \
+               -delta $DELTA_FILE \
+|| { echo "Encode with three arguments failed"; \
+     exit 1; }
+$VCDIFF decode -dictionary $DICTIONARY_FILE \
+               -delta $DELTA_FILE \
+               -target $OUTPUT_TARGET_FILE \
+|| { echo "Decode with three arguments failed"; \
+     exit 1; }
+cmp $TARGET_FILE $OUTPUT_TARGET_FILE \
+|| { echo "Decoded target does not match original"; \
+     exit 1; }
+echo "Test 3 ok";
+
+rm $DELTA_FILE
+rm $OUTPUT_TARGET_FILE
+
+# vcdiff using stdin/stdout.  Verify that output file matches target file
+{ $VCDIFF $VCD_OPTIONS \
+          encode -dictionary $DICTIONARY_FILE \
+                 < $TARGET_FILE \
+                 > $DELTA_FILE; } \
+|| { echo "Encode using stdin/stdout failed"; \
+     exit 1; }
+{ $VCDIFF decode -dictionary $DICTIONARY_FILE \
+                 < $DELTA_FILE \
+                 > $OUTPUT_TARGET_FILE; } \
+|| { echo "Decode using stdin/stdout failed"; \
+     exit 1; }
+cmp $TARGET_FILE $OUTPUT_TARGET_FILE \
+|| { echo "Decoded target does not match original"; \
+     exit 1; }
+echo "Test 4 ok";
+
+rm $DELTA_FILE
+rm $OUTPUT_TARGET_FILE
+
+# vcdiff with mixed stdin/stdout.
+{ $VCDIFF $VCD_OPTIONS \
+          encode -dictionary $DICTIONARY_FILE \
+                 -target $TARGET_FILE \
+                 > $DELTA_FILE; } \
+|| { echo "Encode with mixed arguments failed"; \
+     exit 1; }
+{ $VCDIFF decode -dictionary $DICTIONARY_FILE \
+                 -delta $DELTA_FILE \
+                 > $OUTPUT_TARGET_FILE; } \
+|| { echo "Decode with mixed arguments failed"; \
+     exit 1; }
+cmp $TARGET_FILE $OUTPUT_TARGET_FILE \
+|| { echo "Decoded target does not match original"; \
+     exit 1; }
+echo "Test 5 ok";
+
+rm $DELTA_FILE
+rm $OUTPUT_TARGET_FILE
+
+{ $VCDIFF $VCD_OPTIONS \
+          encode -dictionary $DICTIONARY_FILE \
+                 < $TARGET_FILE \
+                 -delta $DELTA_FILE; } \
+|| { echo "Encode with mixed arguments failed"; \
+     exit 1; }
+{ $VCDIFF decode -dictionary $DICTIONARY_FILE \
+                 < $DELTA_FILE \
+                 -target $OUTPUT_TARGET_FILE; } \
+|| { echo "Decode with mixed arguments failed"; \
+     exit 1; }
+cmp $TARGET_FILE $OUTPUT_TARGET_FILE \
+|| { echo "Decoded target does not match original"; \
+     exit 1; }
+echo "Test 6 ok";
+
+rm $OUTPUT_TARGET_FILE
+# Don't remove $DELTA_FILE; use it for the next test
+
+# If using the wrong dictionary, and dictionary is smaller than the original
+# dictionary, vcdiff will spot the mistake and return an error.  (It can't
+# detect the case where the wrong dictionary is larger than the right one.)
+$VCDIFF decode -dictionary $TARGET_FILE \
+               -delta $DELTA_FILE \
+               -target $OUTPUT_TARGET_FILE \
+&& { echo "Decode using larger dictionary should fail, but succeeded"; \
+     exit 1; }
+echo "Test 7 ok";
+
+rm $DELTA_FILE
+rm $OUTPUT_TARGET_FILE
+
+# "vcdiff test" with all three arguments.
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -target $TARGET_FILE \
+             -delta $DELTA_FILE \
+|| { echo "vcdiff test with three arguments failed"; \
+     exit 1; }
+echo "Test 8 ok";
+
+rm $DELTA_FILE
+
+# Dictionary file not found.
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $TEST_TMPDIR/nonexistent_file \
+               -target $TARGET_FILE \
+               -delta $DELTA_FILE \
+&& { echo "vcdiff with missing dictionary file should fail, but succeeded"; \
+     exit 1; }
+echo "Test 9 ok";
+
+# Target file not found.
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $DICTIONARY_FILE \
+               -target $TEST_TMPDIR/nonexistent_file \
+               -delta $DELTA_FILE \
+&& { echo "vcdiff with missing target file should fail, but succeeded"; \
+     exit 1; }
+echo "Test 10 ok";
+
+# Delta file not found.
+$VCDIFF decode -dictionary $DICTIONARY_FILE \
+               -delta $TEST_TMPDIR/nonexistent_file \
+               -target $OUTPUT_TARGET_FILE \
+&& { echo "vcdiff with missing delta file should fail, but succeeded"; \
+     exit 1; }
+echo "Test 11 ok";
+
+# Try traversing an infinite loop of symbolic links.
+ln -s $TEST_TMPDIR/infinite_loop1 $TEST_TMPDIR/infinite_loop2
+ln -s $TEST_TMPDIR/infinite_loop2 $TEST_TMPDIR/infinite_loop1
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $TEST_TMPDIR/infinite_loop1 \
+               -target $TEST_TMPDIR/infinite_loop2 \
+               -delta $DELTA_FILE \
+&& { echo "vcdiff with symbolic link loop should fail, but succeeded"; \
+     exit 1; }
+echo "Test 12 ok";
+
+rm $TEST_TMPDIR/infinite_loop1 $TEST_TMPDIR/infinite_loop2
+
+# Test using -stats flag
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $DICTIONARY_FILE \
+               -target $TARGET_FILE \
+               -delta $DELTA_FILE \
+               -stats \
+|| { echo "Encode with -stats failed"; \
+     exit 1; }
+$VCDIFF -stats \
+        decode -dictionary $DICTIONARY_FILE \
+               -delta $DELTA_FILE \
+               -target $OUTPUT_TARGET_FILE \
+|| { echo "Decode with -stats failed"; \
+     exit 1; }
+cmp $TARGET_FILE $OUTPUT_TARGET_FILE \
+|| { echo "Decoded target does not match original"; \
+     exit 1; }
+echo "Test 13 ok";
+
+rm $DELTA_FILE
+rm $OUTPUT_TARGET_FILE
+
+# Using /dev/null as dictionary should work, but (because dictionary is empty)
+# it will not produce a small delta file.
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary /dev/null \
+             -target $TARGET_FILE \
+             -delta $DELTA_FILE \
+             -stats \
+|| { echo "vcdiff test with /dev/null as dictionary failed"; \
+     exit 1; }
+echo "Test 14 ok";
+
+rm $DELTA_FILE
+
+# Using /dev/kmem as dictionary or target should produce an error
+# (permission denied, or too large, or special file type)
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary /dev/kmem \
+               -target $TARGET_FILE \
+               -delta $DELTA_FILE \
+&& { echo "vcdiff with /dev/kmem as dictionary should fail, but succeeded"; \
+     exit 1; }
+echo "Test 15 ok";
+
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $DICTIONARY_FILE \
+               -target /dev/kmem \
+               -delta $DELTA_FILE \
+&& { echo "vcdiff with /dev/kmem as target should fail, but succeeded"; \
+     exit 1; }
+echo "Test 16 ok";
+
+# Decode using something that isn't a delta file
+$VCDIFF decode -dictionary $DICTIONARY_FILE \
+               -delta /etc/fstab \
+               -target $OUTPUT_TARGET_FILE \
+&& { echo "vcdiff with invalid delta file should fail, but succeeded"; \
+     exit 1; }
+echo "Test 17 ok";
+
+$VCDIFF $VCD_OPTIONS \
+        encode -target $TARGET_FILE \
+               -delta $DELTA_FILE \
+               -dictionary \
+&& { echo "-dictionary option with no file name should fail, but succeeded"; \
+     exit 1; }
+echo "Test 18 ok";
+
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $DICTIONARY_FILE \
+               -delta $DELTA_FILE \
+               -target \
+&& { echo "-target option with no file name should fail, but succeeded"; \
+     exit 1; }
+echo "Test 19 ok";
+
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $DICTIONARY_FILE \
+               -target $TARGET_FILE \
+               -delta \
+&& { echo "-delta option with no file name should fail, but succeeded"; \
+     exit 1; }
+echo "Test 20 ok";
+
+$VCDIFF $VCD_OPTIONS \
+        encode -dictionary $DICTIONARY_FILE \
+               -target $TARGET_FILE \
+               -delta $DELTA_FILE \
+               -buffersize \
+&& { echo "-buffersize option with no argument should fail, but succeeded"; \
+     exit 1; }
+echo "Test 21 ok";
+
+# Using -buffersize=1 should still work.
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -target $TARGET_FILE \
+             -delta $DELTA_FILE \
+             -buffersize 1 \
+             -stats \
+|| { echo "vcdiff test with -buffersize=1 failed"; \
+     exit 1; }
+echo "Test 22 ok";
+
+rm $DELTA_FILE
+
+# Using -buffersize=1 with stdin/stdout means that vcdiff
+# will create a separate target window for each byte read.
+{ $VCDIFF encode -dictionary $DICTIONARY_FILE \
+                 -buffersize 1 \
+                 -stats \
+                 < $TARGET_FILE \
+                 > $DELTA_FILE; } \
+|| { echo "Encode using stdin/stdout with -buffersize=1 failed"; \
+     exit 1; }
+{ $VCDIFF decode -dictionary $DICTIONARY_FILE \
+                 -buffersize 1 \
+                 -stats \
+                 < $DELTA_FILE \
+                 > $OUTPUT_TARGET_FILE; } \
+|| { echo "Decode using stdin/stdout with -buffersize=1 failed"; \
+     exit 1; }
+cmp $TARGET_FILE $OUTPUT_TARGET_FILE \
+|| { echo "Decoded target does not match original with -buffersize=1"; \
+     exit 1; }
+echo "Test 23 ok";
+
+rm $DELTA_FILE
+rm $OUTPUT_TARGET_FILE
+
+# Using -buffersize=0 should fail.
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -target $TARGET_FILE \
+             -delta $DELTA_FILE \
+             -buffersize 0 \
+&& { echo "vcdiff test with -buffersize=0 should fail, but succeeded"; \
+     exit 1; }
+echo "Test 24 ok";
+
+rm $DELTA_FILE
+
+# Using -buffersize=128M (larger than default maximum) should still work.
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -target $TARGET_FILE \
+             -delta $DELTA_FILE \
+             -buffersize 134217728 \
+             -stats \
+|| { echo "vcdiff test with -buffersize=128M failed"; \
+     exit 1; }
+echo "Test 25 ok";
+
+rm $DELTA_FILE
+
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -target $TARGET_FILE \
+             -delta $DELTA_FILE \
+             -froobish \
+&& { echo "vdiff test with unrecognized option should fail, but succeeded"; \
+     exit 1; }
+echo "Test 26 ok";
+
+$VCDIFF $VCD_OPTIONS \
+        encode -target $TARGET_FILE \
+               -delta $DELTA_FILE \
+&& { echo "encode with no dictionary option should fail, but succeeded"; \
+     exit 1; }
+echo "Test 27 ok";
+
+$VCDIFF decode -target $TARGET_FILE \
+               -delta $DELTA_FILE \
+&& { echo "decode with no dictionary option should fail, but succeeded"; \
+     exit 1; }
+echo "Test 28 ok";
+
+# Remove -interleaved and -checksum options
+{ $VCDIFF encode -dictionary $DICTIONARY_FILE \
+                 < $TARGET_FILE \
+                 > $DELTA_FILE; } \
+|| { echo "Encode without -interleaved and -checksum options failed"; \
+     exit 1; }
+{ $VCDIFF decode -dictionary $DICTIONARY_FILE \
+                 < $DELTA_FILE \
+                 > $OUTPUT_TARGET_FILE; } \
+|| { echo "Decode non-interleaved output failed"; \
+     exit 1; }
+cmp $TARGET_FILE $OUTPUT_TARGET_FILE \
+|| { echo "Decoded target does not match original with -interleaved"; \
+     exit 1; }
+echo "Test 29 ok";
+
+# -target_matches option
+{ $VCDIFF encode -dictionary $DICTIONARY_FILE \
+                 -target_matches \
+                 -stats \
+                 < $TARGET_FILE \
+                 > $DELTA_FILE; } \
+|| { echo "Encode with -target_matches option failed"; \
+     exit 1; }
+# The decode operation ignores the -target_matches option.
+{ $VCDIFF decode -dictionary $DICTIONARY_FILE \
+                 < $DELTA_FILE \
+                 > $OUTPUT_TARGET_FILE; } \
+|| { echo "Decode output failed with -target_matches"; \
+     exit 1; }
+cmp $TARGET_FILE $OUTPUT_TARGET_FILE \
+|| { echo "Decoded target does not match original with -target_matches"; \
+     exit 1; }
+echo "Test 30 ok";
+
+rm $DELTA_FILE
+rm $OUTPUT_TARGET_FILE
+
+$VCDIFF $VCD_OPTIONS \
+        dencode -dictionary $DICTIONARY_FILE \
+                -target $TARGET_FILE \
+                -delta $DELTA_FILE \
+&& { echo "vdiff with unrecognized action should fail, but succeeded"; \
+     exit 1; }
+echo "Test 31 ok";
+
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -target $TARGET_FILE \
+&& { echo "vdiff test without delta option should fail, but succeeded"; \
+     exit 1; }
+echo "Test 32 ok";
+
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -delta $DELTA_FILE \
+&& { echo "vdiff test without target option should fail, but succeeded"; \
+     exit 1; }
+echo "Test 33 ok";
+
+# open-vcdiff bug 8 (http://code.google.com/p/open-vcdiff/issues/detail?id=8)
+# A malicious encoding that tries to produce a 4GB target file made up of 64
+# windows, each window having a size of 64MB.
+# Start by limiting memory usage to 96MB per process, so the test doesn't take
+# forever to run out of memory.
+ulimit -d 98304
+ulimit -m 98304
+$VCDIFF $VCD_OPTIONS \
+    decode -dictionary $DICTIONARY_FILE \
+           -delta $MALICIOUS_ENCODING \
+           -target /dev/null \
+           -max_target_file_size=65536 \
+&& { echo "Decoding malicious file should fail, but succeeded"; \
+     exit 1; }
+echo "Test 34 ok";
+
+$VCDIFF $VCD_OPTIONS \
+    decode -dictionary $DICTIONARY_FILE \
+           -delta $MALICIOUS_ENCODING \
+           -target /dev/null \
+           -max_target_window_size=65536 \
+&& { echo "Decoding malicious file should fail, but succeeded"; \
+     exit 1; }
+echo "Test 35 ok";
+
+# Decoding a small target with the -max_target_file_size option should succeed.
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -target $TARGET_FILE \
+             -delta $DELTA_FILE \
+             -max_target_file_size=65536 \
+|| { echo "vcdiff test with -max_target_file_size failed"; \
+     exit 1; }
+echo "Test 36 ok";
+
+# Decoding a small target with -max_target_window_size option should succeed.
+$VCDIFF $VCD_OPTIONS \
+        test -dictionary $DICTIONARY_FILE \
+             -target $TARGET_FILE \
+             -delta $DELTA_FILE \
+             -max_target_window_size=65536 \
+|| { echo "vcdiff test with -max_target_window_size failed"; \
+     exit 1; }
+echo "Test 37 ok";
+
+rm $DELTA_FILE
+
+echo "PASS"
diff --git a/src/vcdiffengine.h b/src/vcdiffengine.h
index 96ca334..0038e35 100644
--- a/src/vcdiffengine.h
+++ b/src/vcdiffengine.h
@@ -17,8 +17,8 @@
 #define OPEN_VCDIFF_VCDIFFENGINE_H_
 
 #include <config.h>
+#include <stddef.h>  // size_t
 #include <stdint.h>  // uint32_t
-#include <cstddef>  // size_t
 
 namespace open_vcdiff {
 
diff --git a/src/vcdiffengine_test.cc b/src/vcdiffengine_test.cc
index a115adc..cef43bf 100644
--- a/src/vcdiffengine_test.cc
+++ b/src/vcdiffengine_test.cc
@@ -15,6 +15,7 @@
 
 #include <config.h>
 #include "vcdiffengine.h"
+#include <string.h>  // memset, strlen
 #include <algorithm>
 #include <string>
 #include <vector>
@@ -31,10 +32,12 @@
 
 namespace {
 
-using std::string;
-
 class VCDiffEngineTestBase : public testing::Test {
  protected:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   // Some common definitions and helper functions used in the various tests
   // for VCDiffEngine.
   static const int kBlockSize = BlockHash::kBlockSize;
diff --git a/src/vcencoder_test.cc b/src/vcencoder_test.cc
index 500e799..782cb13 100644
--- a/src/vcencoder_test.cc
+++ b/src/vcencoder_test.cc
@@ -15,9 +15,9 @@
 
 #include <config.h>
 #include "google/vcencoder.h"
+#include <stdlib.h>  // free, posix_memalign
+#include <string.h>  // memcpy
 #include <algorithm>
-#include <cstdlib>  // free, posix_memalign
-#include <cstring>  // memcpy
 #include <string>
 #include <vector>
 #include "blockhash.h"
@@ -51,8 +51,6 @@
 namespace open_vcdiff {
 namespace {
 
-using std::string;
-
 static const size_t kFileHeaderSize = sizeof(DeltaFileHeader);
 
 // This is to check the maximum possible encoding size
@@ -68,6 +66,10 @@
 
 class VerifyEncodedBytesTest : public testing::Test {
  public:
+#ifndef VCDIFF_HAS_GLOBAL_STRING
+  typedef std::string string;
+#endif  // !VCDIFF_HAS_GLOBAL_STRING
+
   VerifyEncodedBytesTest() : delta_index_(0) { }
   virtual ~VerifyEncodedBytesTest() { }
 
diff --git a/testdata/allocates_4gb.vcdiff b/testdata/allocates_4gb.vcdiff
new file mode 100644
index 0000000..48414b9
--- /dev/null
+++ b/testdata/allocates_4gb.vcdiff
Binary files differ
diff --git a/testdata/configure.ac.v0.1 b/testdata/configure.ac.v0.1
new file mode 100644
index 0000000..43f5291
--- /dev/null
+++ b/testdata/configure.ac.v0.1
@@ -0,0 +1,57 @@
+## Process this file with autoconf to produce configure.
+## In general, the safest way to proceed is to run ./autogen.sh
+
+# make sure we're interpreted by some minimal autoconf
+AC_PREREQ(2.57)
+
+AC_INIT(open-vcdiff, 0.1, opensource@google.com)
+AC_CONFIG_SRCDIR(README)
+AM_INIT_AUTOMAKE
+AM_CONFIG_HEADER(src/config.h)
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CXX
+AM_CONDITIONAL(GCC, test "$GCC" = yes)   # let the Makefile know if we're gcc
+AC_CANONICAL_HOST
+
+AC_PROG_LIBTOOL
+AC_SUBST(LIBTOOL_DEPS)
+
+# Check whether some low-level functions/files are available
+AC_HEADER_STDC
+
+case $host in
+  *86*-*-gnu*) AC_DEFINE(VCDIFF_USE_BLOCK_COMPARE_WORDS, 1,
+			 Use custom compare function instead of memcmp)
+esac
+
+AC_CHECK_HEADERS([ext/rope])
+AC_CHECK_HEADERS([getopt.h])
+AC_CHECK_HEADERS([malloc.h])
+AC_CHECK_HEADERS([sys/mman.h])
+AC_CHECK_HEADERS([sys/time.h])
+AC_CHECK_HEADERS([unistd.h])
+AC_CHECK_HEADERS([windows.h])
+AC_CHECK_FUNCS([gettimeofday QueryPerformanceCounter])
+AC_CHECK_FUNCS([memalign posix_memalign])
+AC_CHECK_FUNCS([mprotect])
+
+# Start of definitions needed by gflags package
+
+AC_CHECK_HEADERS([stdint.h sys/types.h inttypes.h])
+AC_CHECK_HEADERS([fnmatch.h])
+AC_CHECK_FUNCS([InitializeCriticalSection])
+AC_CHECK_FUNCS([InterlockedCompareExchange])
+AC_CHECK_FUNCS([strtoll strtoq])
+AC_CHECK_TYPES([uint16_t, u_int16_t, __int16])
+
+AX_C___ATTRIBUTE__
+
+ACX_PTHREAD
+
+# End of definitions needed by gflags package
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/testdata/configure.ac.v0.2 b/testdata/configure.ac.v0.2
new file mode 100644
index 0000000..8872538
--- /dev/null
+++ b/testdata/configure.ac.v0.2
@@ -0,0 +1,55 @@
+## Process this file with autoconf to produce configure.
+## In general, the safest way to proceed is to run ./autogen.sh
+
+# make sure we're interpreted by some minimal autoconf
+AC_PREREQ(2.57)
+
+AC_INIT(open-vcdiff, 0.2, opensource@google.com)
+AC_CONFIG_SRCDIR(README)
+AM_INIT_AUTOMAKE
+AM_CONFIG_HEADER(src/config.h)
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CXX
+AM_CONDITIONAL(GCC, test "$GCC" = yes)   # let the Makefile know if we're gcc
+AC_CANONICAL_HOST
+
+AC_PROG_LIBTOOL
+AC_SUBST(LIBTOOL_DEPS)
+
+# Check whether some low-level functions/files are available
+AC_HEADER_STDC
+
+case $host in
+  *86*-*-*bsd* | *86*-*-gnu*)
+    AC_DEFINE(VCDIFF_USE_BLOCK_COMPARE_WORDS, 1,
+              Use custom compare function instead of memcmp)
+    ;;
+esac
+
+AC_CHECK_HEADERS([ext/rope])
+AC_CHECK_HEADERS([getopt.h])
+AC_CHECK_HEADERS([malloc.h])
+AC_CHECK_HEADERS([sys/mman.h])
+AC_CHECK_HEADERS([sys/time.h])
+AC_CHECK_HEADERS([unistd.h])
+AC_CHECK_HEADERS([windows.h])
+AC_CHECK_FUNCS([gettimeofday QueryPerformanceCounter])
+AC_CHECK_FUNCS([memalign posix_memalign])
+AC_CHECK_FUNCS([mprotect])
+
+# Start of definitions needed by gflags package
+
+AC_CHECK_HEADERS([stdint.h sys/types.h inttypes.h])
+AC_CHECK_HEADERS([fnmatch.h])
+AC_CHECK_FUNCS([strtoll strtoq])
+AC_CHECK_TYPES([uint16_t, u_int16_t, __int16])
+
+AX_C___ATTRIBUTE__
+
+# End of definitions needed by gflags package
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/vsprojects/config.h b/vsprojects/config.h
index 4062437..dbdb139 100644
--- a/vsprojects/config.h
+++ b/vsprojects/config.h
@@ -45,19 +45,19 @@
 #define PACKAGE_NAME "open-vcdiff"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "open-vcdiff 0.2"
+#define PACKAGE_STRING "open-vcdiff 0.3"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "open-vcdiff"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "0.2"
+#define PACKAGE_VERSION "0.3"
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
 
 /* Version number of package */
-#define VERSION "0.2"
+#define VERSION "0.3"
 
 // These functions have different names, but the same behavior,
 // for Visual Studio.
diff --git a/vsprojects/vcdecoder_test/vcdecoder_test.vcproj b/vsprojects/vcdecoder_test/vcdecoder_test.vcproj
index 1e32fe6..5f496b4 100644
--- a/vsprojects/vcdecoder_test/vcdecoder_test.vcproj
+++ b/vsprojects/vcdecoder_test/vcdecoder_test.vcproj
@@ -191,19 +191,19 @@
 				>
 			</File>
 			<File
-				RelativePath="..\..\src\vcdecoder_test1.cc"
+				RelativePath="..\..\src\vcdecoder1_test.cc"
 				>
 			</File>
 			<File
-				RelativePath="..\..\src\vcdecoder_test2.cc"
+				RelativePath="..\..\src\vcdecoder2_test.cc"
 				>
 			</File>
 			<File
-				RelativePath="..\..\src\vcdecoder_test3.cc"
+				RelativePath="..\..\src\vcdecoder3_test.cc"
 				>
 			</File>
 			<File
-				RelativePath="..\..\src\vcdecoder_test4.cc"
+				RelativePath="..\..\src\vcdecoder4_test.cc"
 				>
 			</File>
 		</Filter>
