|
@@ -52,6 +52,9 @@ void xavp_shm_free_unsafe(void *p)
|
|
|
|
|
|
void xavp_free(sr_xavp_t *xa)
|
|
void xavp_free(sr_xavp_t *xa)
|
|
{
|
|
{
|
|
|
|
+ if(xa==NULL) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
if(xa->val.type == SR_XTYPE_DATA) {
|
|
if(xa->val.type == SR_XTYPE_DATA) {
|
|
if(xa->val.v.data!=NULL && xa->val.v.data->pfree!=NULL) {
|
|
if(xa->val.v.data!=NULL && xa->val.v.data->pfree!=NULL) {
|
|
xa->val.v.data->pfree(xa->val.v.data->p, xavp_shm_free);
|
|
xa->val.v.data->pfree(xa->val.v.data->p, xavp_shm_free);
|
|
@@ -69,6 +72,9 @@ void xavp_free(sr_xavp_t *xa)
|
|
|
|
|
|
void xavp_free_unsafe(sr_xavp_t *xa)
|
|
void xavp_free_unsafe(sr_xavp_t *xa)
|
|
{
|
|
{
|
|
|
|
+ if(xa==NULL) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
if(xa->val.type == SR_XTYPE_DATA) {
|
|
if(xa->val.type == SR_XTYPE_DATA) {
|
|
if(xa->val.v.data!=NULL && xa->val.v.data->pfree!=NULL) {
|
|
if(xa->val.v.data!=NULL && xa->val.v.data->pfree!=NULL) {
|
|
xa->val.v.data->pfree(xa->val.v.data->p, xavp_shm_free_unsafe);
|
|
xa->val.v.data->pfree(xa->val.v.data->p, xavp_shm_free_unsafe);
|
|
@@ -122,8 +128,9 @@ static sr_xavp_t *xavp_new_value(str *name, sr_xval_t *val)
|
|
|
|
|
|
int xavp_add(sr_xavp_t *xavp, sr_xavp_t **list)
|
|
int xavp_add(sr_xavp_t *xavp, sr_xavp_t **list)
|
|
{
|
|
{
|
|
- if (xavp==NULL)
|
|
|
|
|
|
+ if (xavp==NULL) {
|
|
return -1;
|
|
return -1;
|
|
|
|
+ }
|
|
/* Prepend new xavp to the list */
|
|
/* Prepend new xavp to the list */
|
|
if(list) {
|
|
if(list) {
|
|
xavp->next = *list;
|
|
xavp->next = *list;
|
|
@@ -141,8 +148,9 @@ int xavp_add_last(sr_xavp_t *xavp, sr_xavp_t **list)
|
|
sr_xavp_t *prev;
|
|
sr_xavp_t *prev;
|
|
sr_xavp_t *crt;
|
|
sr_xavp_t *crt;
|
|
|
|
|
|
- if (xavp==NULL)
|
|
|
|
|
|
+ if (xavp==NULL) {
|
|
return -1;
|
|
return -1;
|
|
|
|
+ }
|
|
|
|
|
|
crt = xavp_get_internal(&xavp->name, list, 0, 0);
|
|
crt = xavp_get_internal(&xavp->name, list, 0, 0);
|
|
|
|
|
|
@@ -172,6 +180,10 @@ int xavp_add_last(sr_xavp_t *xavp, sr_xavp_t **list)
|
|
|
|
|
|
int xavp_add_after(sr_xavp_t *nxavp, sr_xavp_t *pxavp)
|
|
int xavp_add_after(sr_xavp_t *nxavp, sr_xavp_t *pxavp)
|
|
{
|
|
{
|
|
|
|
+ if (nxavp==NULL) {
|
|
|
|
+ return -1;
|
|
|
|
+ }
|
|
|
|
+
|
|
if(pxavp==NULL) {
|
|
if(pxavp==NULL) {
|
|
nxavp->next = *_xavp_list_crt;
|
|
nxavp->next = *_xavp_list_crt;
|
|
*_xavp_list_crt = nxavp;
|
|
*_xavp_list_crt = nxavp;
|
|
@@ -296,7 +308,7 @@ static sr_xavp_t *xavp_get_internal(str *name, sr_xavp_t **list, int idx, sr_xav
|
|
if(name==NULL || name->s==NULL)
|
|
if(name==NULL || name->s==NULL)
|
|
return NULL;
|
|
return NULL;
|
|
id = get_hash1_raw(name->s, name->len);
|
|
id = get_hash1_raw(name->s, name->len);
|
|
-
|
|
|
|
|
|
+
|
|
if(list && *list)
|
|
if(list && *list)
|
|
avp = *list;
|
|
avp = *list;
|
|
else
|
|
else
|
|
@@ -333,7 +345,7 @@ sr_xavp_t *xavp_get_next(sr_xavp_t *start)
|
|
|
|
|
|
if(start==NULL)
|
|
if(start==NULL)
|
|
return NULL;
|
|
return NULL;
|
|
-
|
|
|
|
|
|
+
|
|
avp = start->next;
|
|
avp = start->next;
|
|
while(avp)
|
|
while(avp)
|
|
{
|
|
{
|
|
@@ -477,7 +489,7 @@ int xavp_count(str *name, sr_xavp_t **start)
|
|
if(name==NULL || name->s==NULL)
|
|
if(name==NULL || name->s==NULL)
|
|
return -1;
|
|
return -1;
|
|
id = get_hash1_raw(name->s, name->len);
|
|
id = get_hash1_raw(name->s, name->len);
|
|
-
|
|
|
|
|
|
+
|
|
if(start)
|
|
if(start)
|
|
avp = *start;
|
|
avp = *start;
|
|
else
|
|
else
|
|
@@ -529,7 +541,7 @@ void xavp_destroy_list(sr_xavp_t **head)
|
|
void xavp_reset_list(void)
|
|
void xavp_reset_list(void)
|
|
{
|
|
{
|
|
assert(_xavp_list_crt!=0 );
|
|
assert(_xavp_list_crt!=0 );
|
|
-
|
|
|
|
|
|
+
|
|
if (_xavp_list_crt!=&_xavp_list_head)
|
|
if (_xavp_list_crt!=&_xavp_list_head)
|
|
_xavp_list_crt=&_xavp_list_head;
|
|
_xavp_list_crt=&_xavp_list_head;
|
|
xavp_destroy_list(_xavp_list_crt);
|
|
xavp_destroy_list(_xavp_list_crt);
|
|
@@ -539,7 +551,7 @@ void xavp_reset_list(void)
|
|
sr_xavp_t **xavp_set_list(sr_xavp_t **head)
|
|
sr_xavp_t **xavp_set_list(sr_xavp_t **head)
|
|
{
|
|
{
|
|
sr_xavp_t **avp;
|
|
sr_xavp_t **avp;
|
|
-
|
|
|
|
|
|
+
|
|
assert(_xavp_list_crt!=0);
|
|
assert(_xavp_list_crt!=0);
|
|
|
|
|
|
avp = _xavp_list_crt;
|
|
avp = _xavp_list_crt;
|
|
@@ -780,6 +792,10 @@ int xavp_insert(sr_xavp_t *xavp, int idx, sr_xavp_t **list)
|
|
int n = 0;
|
|
int n = 0;
|
|
int i = 0;
|
|
int i = 0;
|
|
|
|
|
|
|
|
+ if(xavp==NULL) {
|
|
|
|
+ return -1;
|
|
|
|
+ }
|
|
|
|
+
|
|
crt = xavp_get_internal(&xavp->name, list, 0, NULL);
|
|
crt = xavp_get_internal(&xavp->name, list, 0, NULL);
|
|
|
|
|
|
if (idx == 0 && (!crt || crt->val.type != SR_XTYPE_NULL))
|
|
if (idx == 0 && (!crt || crt->val.type != SR_XTYPE_NULL))
|
|
@@ -845,7 +861,7 @@ sr_xavp_t *xavp_extract(str *name, sr_xavp_t **list)
|
|
avp->next = NULL;
|
|
avp->next = NULL;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
return avp;
|
|
return avp;
|
|
}
|
|
}
|
|
|
|
|