/* Decode */
                        if ((err = (Decoders[son->type]) (bs, son, base,
-                                                         level + 1)) >
-                           H323_ERROR_STOP)
+                                                         level + 1)) <
+                           H323_ERROR_NONE)
                                return err;
 
                        bs->cur = beg + len;
                        bs->bit = 0;
                } else if ((err = (Decoders[son->type]) (bs, son, base,
-                                                        level + 1)))
+                                                        level + 1)) <
+                          H323_ERROR_NONE)
                        return err;
        }
 
                beg = bs->cur;
 
                if ((err = (Decoders[son->type]) (bs, son, base,
-                                                 level + 1)) >
-                   H323_ERROR_STOP)
+                                                 level + 1)) <
+                   H323_ERROR_NONE)
                        return err;
 
                bs->cur = beg + len;
                                                          i <
                                                          effective_count ?
                                                          base : NULL,
-                                                         level + 1)) >
-                           H323_ERROR_STOP)
+                                                         level + 1)) <
+                           H323_ERROR_NONE)
                                return err;
 
                        bs->cur = beg + len;
                        bs->bit = 0;
                } else
-                   if ((err = (Decoders[son->type]) (bs, son,
-                                                     i < effective_count ?
-                                                     base : NULL,
-                                                     level + 1)))
-                       return err;
+                       if ((err = (Decoders[son->type]) (bs, son,
+                                                         i <
+                                                         effective_count ?
+                                                         base : NULL,
+                                                         level + 1)) <
+                           H323_ERROR_NONE)
+                               return err;
 
                if (base)
                        base += son->offset;
                }
                beg = bs->cur;
 
-               if ((err = (Decoders[son->type]) (bs, son, base, level + 1)) >
-                   H323_ERROR_STOP)
+               if ((err = (Decoders[son->type]) (bs, son, base, level + 1)) <
+                   H323_ERROR_NONE)
                        return err;
 
                bs->cur = beg + len;
                bs->bit = 0;
-       } else if ((err = (Decoders[son->type]) (bs, son, base, level + 1)))
+       } else if ((err = (Decoders[son->type]) (bs, son, base, level + 1)) <
+                  H323_ERROR_NONE)
                return err;
 
        return H323_ERROR_NONE;