title: Buffer Underflow?
body: <p>I have the following snippet of code. The marked line is causing a BufferUnderflowException. I read the documentation on the exception but still do not understand what <em>exactly</em> it menas. I use the <code>.rewind()</code> method which I was under the impression mitigates the issue. </p>
  
  <p>Can anyone please enlighten me on the topic or cause of my error?</p>
  
  <pre><code>            Bitmap cameraBaseSized = BitmapFactory.decodeFile(cameraPath, opts);
              Bitmap canvasBlendSized = BitmapFactory.decodeFile(canvasPath, options);
              Bitmap result = cameraBaseSized.copy(Config.ARGB_8888, true);
              IntBuffer buffBase = IntBuffer.allocate(cameraBaseSized.getWidth()
                      * cameraBaseSized.getHeight());
              cameraBaseSized.copyPixelsToBuffer(buffBase);
              buffBase.rewind();
              IntBuffer buffBlend = IntBuffer.allocate(canvasBlendSized.getWidth()
                      * canvasBlendSized.getHeight());
              canvasBlendSized.copyPixelsToBuffer(buffBlend);
              buffBlend.rewind();
              IntBuffer buffOut = IntBuffer.allocate(cameraBaseSized.getWidth()
                      * cameraBaseSized.getHeight());
              buffOut.rewind();
              while (buffOut.position() &lt; buffOut.limit()) {
                  int filterInt = buffBlend.get(); //BUFFERUNDERFLOW EXCEPTION
                  int srcInt = buffBase.get();
                  int redValueFilter = Color.red(filterInt);
                  int greenValueFilter = Color.green(filterInt);
                  int blueValueFilter = Color.blue(filterInt);
                  int redValueSrc = Color.red(srcInt);
                  int greenValueSrc = Color.green(srcInt);
                  int blueValueSrc = Color.blue(srcInt);
                  int redValueFinal = multiply(redValueFilter, redValueSrc);
                  int greenValueFinal = multiply(greenValueFilter, greenValueSrc);
                  int blueValueFinal = multiply(blueValueFilter, blueValueSrc);
                  int pixel = Color.argb(255, redValueFinal, greenValueFinal, blueValueFinal);
                  buffOut.put(pixel);
              }
              buffOut.rewind();
              result.copyPixelsFromBuffer(buffOut);
  </code></pre>
  
  <p>And the exception snippet</p>
  
  <pre><code>11-29 14:41:57.347: E/AndroidRuntime(2166): Caused by: java.nio.BufferUnderflowException
  11-29 14:41:57.347: E/AndroidRuntime(2166):     at java.nio.IntArrayBuffer.get(IntArrayBuffer.java:55)
  </code></pre>
  
  <p>I also would like to add this is happening only on specific devices, particularly samsung flavors. </p>