progs/mkphrase.c: Fix trailing spaces in usage message.
[catacomb] / symm / salsa20-core.h
index 352fec3..e64e733 100644 (file)
  * @n@ is decreased appropriately.
  */
 #define SALSA20_OUTBUF(ctx, d, s, n) do {                              \
-  size_t _n = (n), _left = SALSA20_OUTSZ - (ctx)->off;                 \
-  if (_n > _left) _n = _left;                                          \
-  (n) -= _n;                                                           \
-  if (!(d)) (ctx)->off += _n;                                          \
-  else if (s) while (_n--) *(d)++ = (ctx)->b[(ctx)->off++] ^ *(s)++;   \
-  else while (_n--) *(d)++ = (ctx)->b[(ctx)->off++];                   \
+  const octet *_p = (ctx)->b + (ctx)->off;                             \
+  size_t _n = (n);                                                     \
+                                                                       \
+  (ctx)->off += _n;                                                    \
+  if (!(d)) /* nothing to do */;                                       \
+  else if (!(s)) { memcpy((d), _p, _n); (d) += _n; }                   \
+  else while (_n--) *(d)++ = *(s)++ ^ *_p++;                           \
 } while (0)
 
 /*----- Variants and naming -----------------------------------------------*/