http://bugs.gentoo.org/200767
http://sourceforge.net/tracker/index.php?func=detail&aid=1947059&group_id=5776&atid=305776

--- mjpegtools-1.9.0rc3/mpeg2enc/encodertypes.h
+++ mjpegtools-1.9.0rc3/mpeg2enc/encodertypes.h
@@ -25,6 +25,8 @@
  */
 
 
+#include <stdlib.h>
+
 class Parity
 {
 public:
--- mjpegtools-1.9.0rc3/mpeg2enc/macroblock.cc
+++ mjpegtools-1.9.0rc3/mpeg2enc/macroblock.cc
@@ -21,6 +21,7 @@
 
 #include <stdio.h>
 #include <cassert>
+#include <limits.h>
 
 #include "macroblock.hh"
 #include "mpeg2syntaxcodes.h"
--- mjpegtools-1.9.0rc3/mpeg2enc/picturereader.cc
+++ mjpegtools-1.9.0rc3/mpeg2enc/picturereader.cc
@@ -23,6 +23,7 @@
 #include "picturereader.hh"
 #include "mpeg2encoder.hh"
 #include "imageplanes.hh"
+#include <limits.h>
 //#include <stdio.h>
 //#include <stdlib.h>
 //#include <unistd.h>
--- mjpegtools-1.9.0rc3/mplex/inputstrm.cpp
+++ mjpegtools-1.9.0rc3/mplex/inputstrm.cpp
@@ -23,6 +23,7 @@
 
 #include <config.h>
 #include <assert.h>
+#include <limits.h>
 
 #include "mjpeg_types.h"
 #include "inputstrm.hpp"
--- mjpegtools-1.9.0rc3/mplex/padstrm.cpp
+++ mjpegtools-1.9.0rc3/mplex/padstrm.cpp
@@ -24,6 +24,7 @@
 #include "config.h"
 #endif
 
+#include <string.h>
 #include "padstrm.hpp"
 
 
--- mjpegtools-1.9.0rc3/mplex/multiplexor.cpp
+++ mjpegtools-1.9.0rc3/mplex/multiplexor.cpp
@@ -22,6 +22,7 @@
 #include <config.h>
 #include <math.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include <mjpeg_types.h>
 #include <mjpeg_logging.h>
--- mjpegtools-1.9.0rc3/mplex/main.cpp
+++ mjpegtools-1.9.0rc3/mplex/main.cpp
@@ -31,6 +31,7 @@
 #include <getopt.h>
 #endif
 #include <string>
+#include <string.h>
 #include <memory>
 #include <sys/stat.h>
 #ifndef _WIN32
--- mjpegtools-1.9.0rc3/y4mdenoise/Set.hh
+++ mjpegtools-1.9.0rc3/y4mdenoise/Set.hh
@@ -23,7 +23,7 @@
 		// How we implement ourselves.
 	
 public:
-	typedef typename Imp::Allocator Allocator;
+	typedef typename Imp::Allocator_t Allocator;
 		// The type of allocator to use to allocate items in the set.
 
 	Set (const PRED &a_rPred = PRED(),
--- mjpegtools-1.9.0rc3/y4mdenoise/SkipList.hh
+++ mjpegtools-1.9.0rc3/y4mdenoise/SkipList.hh
@@ -57,19 +57,19 @@
 		// Will give good sorting for up to e^10 items.
 	
 public:
-	typedef Allocator<Node,HEADERCHUNK> Allocator;
+	typedef Allocator<Node,HEADERCHUNK> Allocator_t;
 		// The type of node allocator to use.
 
-	static Allocator sm_oNodeAllocator;
+	static Allocator_t sm_oNodeAllocator;
 		// The default node allocator.
 
 	SkipList (const PRED &a_rPred = PRED(),
-			Allocator &a_rAlloc = sm_oNodeAllocator);
+			Allocator_t &a_rAlloc = sm_oNodeAllocator);
 		// Default constructor.  Must be followed by Init().
 
 	SkipList (Status_t &a_reStatus, bool a_bAllowDuplicates,
 			uint32_t a_nRandSeed, const PRED &a_rPred = PRED(),
-			Allocator &a_rAlloc = sm_oNodeAllocator);
+			Allocator_t &a_rAlloc = sm_oNodeAllocator);
 		// Constructor.  Specify whether or not duplicates are allowed,
 		// and provide a random number seed.
 
@@ -255,7 +255,7 @@
 
 private:
 	
-	Allocator &m_rNodeAllocator;
+	Allocator_t &m_rNodeAllocator;
 		// Where we get memory to allocate nodes.
 
 	bool m_bAllowDuplicates;
@@ -337,7 +337,7 @@
 
 // The default node allocator.  Allocates 64K at a time.
 template <class KEY, class VALUE, class KEYFN, class PRED>
-typename SkipList<KEY,VALUE,KEYFN,PRED>::Allocator
+typename SkipList<KEY,VALUE,KEYFN,PRED>::Allocator_t
 	SkipList<KEY,VALUE,KEYFN,PRED>::sm_oNodeAllocator (65536);
 
 
@@ -345,7 +345,7 @@
 // Default constructor.  Must be followed by Init().
 template <class KEY, class VALUE, class KEYFN, class PRED>
 SkipList<KEY,VALUE,KEYFN,PRED>::SkipList (const PRED &a_rPred,
-		Allocator &a_rAlloc)
+		Allocator_t &a_rAlloc)
 	: m_rNodeAllocator (a_rAlloc), m_oPred (a_rPred)
 {
 	// Set up some defaults.
@@ -371,7 +371,7 @@
 template <class KEY, class VALUE, class KEYFN, class PRED>
 SkipList<KEY,VALUE,KEYFN,PRED>::SkipList (Status_t &a_reStatus,
 		bool a_bAllowDuplicates, uint32_t a_nRandSeed,
-		const PRED &a_rPred, Allocator &a_rAlloc)
+		const PRED &a_rPred, Allocator_t &a_rAlloc)
 	: m_rNodeAllocator (a_rAlloc), m_oPred (a_rPred)
 {
 	// Make sure they didn't start us off with an error.