ReactOS 0.4.16-dev-927-g467dec4
lsearch.cpp File Reference
#include <corecrt_internal.h>
#include <memory.h>
#include <search.h>
Include dependency graph for lsearch.cpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define __fileDECL   __cdecl
 
#define __COMPARE(context, p1, p2)   (*compare)(p1, p2)
 

Functions

void *__fileDECL _lsearch (const void *const key, void *const base, unsigned int *const num, unsigned int const width, int(__fileDECL *compare)(void const *, void const *))
 

Macro Definition Documentation

◆ __COMPARE

#define __COMPARE (   context,
  p1,
  p2 
)    (*compare)(p1, p2)

Definition at line 24 of file lsearch.cpp.

◆ __fileDECL

#define __fileDECL   __cdecl

Definition at line 16 of file lsearch.cpp.

Function Documentation

◆ _lsearch()

void *__fileDECL _lsearch ( const void *const  key,
void *const  base,
unsigned int *const  num,
unsigned int const  width,
int(__fileDECL *compare)(void const *, void const *)   
)

Definition at line 57 of file lsearch.cpp.

65{
66 _VALIDATE_RETURN(key != nullptr, EINVAL, nullptr);
67 _VALIDATE_RETURN(num != nullptr, EINVAL, nullptr);
68 _VALIDATE_RETURN(base != nullptr, EINVAL, nullptr);
69 _VALIDATE_RETURN(width > 0, EINVAL, nullptr);
70 _VALIDATE_RETURN(compare != nullptr, EINVAL, nullptr);
71
72 char* const first = static_cast<char*>(base);
73 char* const last = first + *num * width;
74
75 // Reentrancy diligence: Save (and unset) global-state mode to the stack before making callout to 'compare'
76 __crt_state_management::scoped_global_state_reset saved_state;
77
78 for (char* p = first; p != last; p += width)
79 {
80 if (__COMPARE(context, key, p) == 0)
81 {
82 return p;
83 }
84 }
85
87 ++(*num);
88 return last;
89}
#define EINVAL
Definition: acclib.h:90
#define _VALIDATE_RETURN(expr, errorcode, retexpr)
GLint GLint GLsizei width
Definition: gl.h:1546
const GLint * first
Definition: glext.h:5794
GLfloat GLfloat p
Definition: glext.h:8902
GLuint GLuint num
Definition: glext.h:9618
#define __COMPARE(context, p1, p2)
Definition: lsearch.cpp:24
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static UINT UINT last
Definition: font.c:45
Definition: bug.cpp:8
Definition: http.c:7252
Definition: copy.c:22