I don't understand why nr is a pointer to unsigned char. If it is 
a pointer to char, the code is much cleaner.

* device/cirbuf.c (getc) (nr): Use char instead of unsigned char.
(getc) (c_cf, c_cl): Don't cast to (unsigned char *).
(getc) (c_end, c_start): Likewise.
(getc) (nr): Don't cast to (char *).

---
 device/cirbuf.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/device/cirbuf.c b/device/cirbuf.c
index 292b888..491e89c 100644
--- a/device/cirbuf.c
+++ b/device/cirbuf.c
@@ -103,19 +103,19 @@ int putc(
  */
 int getc(struct cirbuf *cb)
 {
-       unsigned char *nr;
+       char *nr;
        int     c;
 
-       nr = (unsigned char *)cb->c_cf;
-       if (nr == (unsigned char *)cb->c_cl) {
+       nr = cb->c_cf;
+       if (nr == cb->c_cl) {
            CB_CHECK(cb);
            return -1;          /* empty */
        }
        c = *nr;
        nr++;
-       if (nr == (unsigned char *)cb->c_end)
-           nr = (unsigned char *)cb->c_start;
-       cb->c_cf = (char *)nr;
+       if (nr == cb->c_end)
+           nr = cb->c_start;
+       cb->c_cf = nr;
 
        cb->c_cc--;
 
-- 
1.8.1.4


Reply via email to