diff options
author | Werner Koch <[email protected]> | 2004-02-15 16:02:36 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2004-02-15 16:02:36 +0000 |
commit | 6e468be50e0dbd48e2b28128fb816b7eb55cd2bc (patch) | |
tree | 270d447a56a2f9e9d89359fd60f6a20f14a867ea /gpgme/memrchr.c | |
parent | Removed the unneeded alloca.h (diff) | |
download | gpgme-6e468be50e0dbd48e2b28128fb816b7eb55cd2bc.tar.gz gpgme-6e468be50e0dbd48e2b28128fb816b7eb55cd2bc.zip |
(memrchr): Fixed implementation. Problem pointed out
by Adriaan de Groot.
Diffstat (limited to '')
-rw-r--r-- | gpgme/memrchr.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/gpgme/memrchr.c b/gpgme/memrchr.c index 3e60c55e..41d38ae1 100644 --- a/gpgme/memrchr.c +++ b/gpgme/memrchr.c @@ -1,5 +1,5 @@ /* memrchr.c - Replacement for memrchr. - * Copyright (C) 2002 Free Software Foundation, Inc. + * Copyright (C) 2002, 2004 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -27,10 +27,13 @@ void * memrchr (const void *block, int c, size_t size) { - void *p; + const unsigned char *p = block; - for (p = block + size; p != block; p --) - if (*p == c) - return p; - return 0; + if (size) + { + for (p += size - 1; size; p--, size--) + if (*p == c) + return (void *)p; + } + return NULL; } |