diff --git a/_tools/code_generators/libs/png++/README b/_tools/code_generators/libs/png++/README
index cecdd7426c63693664478d96b95a29cc8c1487b0..cb7097e08d7c480ff614d27f0c3506435d4de86d 100644
--- a/_tools/code_generators/libs/png++/README
+++ b/_tools/code_generators/libs/png++/README
@@ -53,7 +53,7 @@ or, for people w/o outgoing svn:
 
 Online documentation can be found here:
 
-	http://www.nongnu.org/pngpp/doc/html/index.html
+	http://www.nongnu.org/pngpp/doc/
 
 
 Help
diff --git a/_tools/code_generators/libs/png++/TODO b/_tools/code_generators/libs/png++/TODO
index 553afca7c2e36e01faaeed06f6d6305374290394..1c83abf0bcd7df3f38ce983afb79fb6f1a5cd248 100644
--- a/_tools/code_generators/libs/png++/TODO
+++ b/_tools/code_generators/libs/png++/TODO
@@ -1,20 +1,4 @@
 ? add output transformations
-+ support for non-8bit data
-+ stream exceptions: badbit only
-+ adjust png::image for non-memory back end buffer + row-by-row io
-+ use doxygen
 - add optional and unknown chunks handling
-+ change bit_depth to size_t
-+ move tests sources to test/, examples to examples/
-+ extract common code from generator/consumer
-+ update pixel traits to detect channels count
-+ unify template parameters naming
-+ make sure all headers compile on their own
-+ add compilation dependency detection
-+ add pixel_buffer/image::operator[]
-+ improve docs and README
 ? endianness in expand_8_to_16()
 - unify error messages (capitalization, etc.)
-+ move stream template parameter from class to function level in
-  generator and consumer
-+ make all tests run even if any of them fails
diff --git a/_tools/code_generators/libs/png++/error.hpp b/_tools/code_generators/libs/png++/error.hpp
index 834cf1b3a9e84997b21ec685f7e401cc9810964b..31e1801d9eb8e44ae9cf125615d81521118ac69d 100644
--- a/_tools/code_generators/libs/png++/error.hpp
+++ b/_tools/code_generators/libs/png++/error.hpp
@@ -100,7 +100,7 @@ namespace png
             strerror_s(buf, ERRBUF_SIZE, errnum);
             return std::string(buf);
 #else
-#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE
+#if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE) || (!__GLIBC__)
             strerror_r(errnum, buf, ERRBUF_SIZE);
             return std::string(buf);
 #else
diff --git a/_tools/code_generators/libs/png++/solid_pixel_buffer.hpp b/_tools/code_generators/libs/png++/solid_pixel_buffer.hpp
index 9f84245fd2e25f2cb4d4a044a12b03a341f59950..65f97a94afcf170aae34f302dcb03510ddf45c62 100644
--- a/_tools/code_generators/libs/png++/solid_pixel_buffer.hpp
+++ b/_tools/code_generators/libs/png++/solid_pixel_buffer.hpp
@@ -164,7 +164,7 @@ namespace png
          */
         void put_row(size_t index, row_const_access r)
         {
-            row_access row = get_row();
+            row_access row = get_row(index);
             for (uint_32 i = 0; i < m_width; ++i)
                 *row++ = *r++;
         }