src/irc_line.c
changeset 23 542c73d07d3c
parent 17 5001564ac5fc
child 75 ff6272398d2e
equal deleted inserted replaced
22:c339c020fd33 23:542c73d07d3c
    53 
    53 
    54     // overall length
    54     // overall length
    55     len = token_len + (flags & TOK_NOSPACE ? 0 : 1) + (flags & TOK_TRAILING ? 1 : 0);
    55     len = token_len + (flags & TOK_NOSPACE ? 0 : 1) + (flags & TOK_TRAILING ? 1 : 0);
    56     
    56     
    57     // check overflow
    57     // check overflow
    58     if (*offset + len > IRC_LINE_MAX)
    58     if (*offset + len + 1 > IRC_LINE_MAX)
    59         return ERR_LINE_TOO_LONG;
    59         return ERR_LINE_TOO_LONG;
    60 
    60 
    61     // check invalid tokens
    61     // check invalid tokens
    62     if (strpbrk(token, (flags & TOK_TRAILING) ? IRC_TOKEN_TRAILING_INVALID : IRC_TOKEN_INVALID))
    62     if (strpbrk(token, (flags & TOK_TRAILING) ? IRC_TOKEN_TRAILING_INVALID : IRC_TOKEN_INVALID))
    63         return ERR_LINE_INVALID_TOKEN;
    63         return ERR_LINE_INVALID_TOKEN;
   110             if ((err = output_token(buf, &off, line->args[i], 0)))
   110             if ((err = output_token(buf, &off, line->args[i], 0)))
   111                 return err;
   111                 return err;
   112        }
   112        }
   113     }
   113     }
   114 
   114 
       
   115     // terminate, output_token reserved the space for this
       
   116     buf[off] = '\0';
       
   117 
   115     // done
   118     // done
   116     return SUCCESS;
   119     return SUCCESS;
   117 }
   120 }
   118 
   121