diff --git a/xbob/flandmark/__init__.py b/xbob/flandmark/__init__.py
index fb661e8d8d1a1ad699dcfdccd4bc9f99da91be3d..78e5ae94f6c9d9b230b828dd5bed9ccc1b8f0681 100644
--- a/xbob/flandmark/__init__.py
+++ b/xbob/flandmark/__init__.py
@@ -120,7 +120,7 @@ class Localizer(_flandmark.Localizer):
       return super(Localizer, self).__call__(gray, b_y, b_x, b_height, b_width)
 
     elif image.ndim == 2:
-      return super(Localizer, self).__call__(gray, b_y, b_x, b_height, b_width)
+      return super(Localizer, self).__call__(image, b_y, b_x, b_height, b_width)
 
     else:
       raise TypeError, "Localizer accepts images as numpy.ndarray objects with either 2 or 3 dimensions"
diff --git a/xbob/flandmark/ext/ext.cpp b/xbob/flandmark/ext/ext.cpp
index 5997d521dc0231a63bf478764bddfcde3a32a74d..9fc71a1d93defac923356cc510ac3f9c698ade04 100644
--- a/xbob/flandmark/ext/ext.cpp
+++ b/xbob/flandmark/ext/ext.cpp
@@ -139,16 +139,19 @@ class Localizer {
       ipl_image->imageData = (char*)input.bz<uint8_t,2>().data();
 
       int bbox[4] = {b_x, b_y, b_x + b_width, b_y + b_height};
+      int flandmark_result;
       {
         bob::python::no_gil unlock;
-        flandmark_detect(ipl_image.get(), bbox, m_flandmark.get(),
+        flandmark_result = flandmark_detect(ipl_image.get(), bbox, m_flandmark.get(),
             m_landmarks.get());
       }
-
+      
       list lmlist; ///< landmark list
 
-      for (int i = 0; i < (2*m_flandmark->data.options.M); i += 2) {
-        lmlist.append(make_tuple(m_landmarks[i], m_landmarks[i+1]));
+      if (flandmark_result == NO_ERR) {
+        for (int i = 0; i < (2*m_flandmark->data.options.M); i += 2) {
+          lmlist.append(make_tuple(m_landmarks[i], m_landmarks[i+1]));
+        }
       }
 
       return object(lmlist);