- (Z_AttributeElement **)odr_malloc (out,
- sizeof(*sk->u.sortAttributes->list->attributes));
- sk->u.sortAttributes->list->attributes[0] = el;
- el->attributeSet = 0;
- el->attributeType = (int *)odr_malloc (out, sizeof(*el->attributeType));
- *el->attributeType = atoi (sort_string);
- el->which = Z_AttributeValue_numeric;
- el->value.numeric = (int *)odr_malloc (out, sizeof(*el->value.numeric));
- *el->value.numeric = atoi (sort_string_sep + 1);
+ (Z_AttributeElement **)
+ odr_malloc (out, 10 *
+ sizeof(*sk->u.sortAttributes->list->attributes));
+ while (i < 10 && sort_string && sort_string_sep)
+ {
+ Z_AttributeElement *el = (Z_AttributeElement *)
+ odr_malloc (out, sizeof(*el));
+ sk->u.sortAttributes->list->attributes[i] = el;
+ el->attributeSet = 0;
+ el->attributeType = (int *)odr_malloc (out, sizeof(*el->attributeType));
+ *el->attributeType = atoi (sort_string);
+ el->which = Z_AttributeValue_numeric;
+ el->value.numeric = (int *)odr_malloc (out, sizeof(*el->value.numeric));
+ *el->value.numeric = atoi (sort_string_sep + 1);
+ i++;
+ sort_string = strchr(sort_string, ',');
+ if (sort_string)
+ {
+ sort_string++;
+ sort_string_sep = strchr (sort_string, '=');
+ }
+ }
+ sk->u.sortAttributes->list->num_attributes = i;