![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BLOB в UDF [D5, Firebird]
jack128 © (2003-04-27 19:36:00)Добрый день.
В процессе разбора примера работы с BLOB полями в UDF возник такой вопрос(пример из документации к IB, сцепление BLOB"ов)
Разве выделенные строки, при удачном чтении, не приведут к зацикливанию UDF?
void blob_concatenate(Blob from1, Blob from2, Blob to)
/* Note Blob to, as final input parameter, is actually for output! */
{
char *buffer;
long length, b_length;
b_length = MAX(from1->max_seglen, from2->max_seglen);
buffer = malloc(b_length);
/* write the from1 Blob into the return Blob, to */
while ((*from1->blob_get_segment) from1->blob_handle, buffer, b_length,&length))
(*to->blob_put_segment) (to->blob_handle, buffer, length);/* now write a delimiter as a dividing line in the blob */
(*to->blob_put_segment) (to->blob_handle, DELIMITER, sizeof(DELIMITER) - 1);
/* finally write the from2 Blob into the return Blob, to */
while ((*from2->blob_get_segment) (from2->blob_handle, buffer, b_length, &length))
}
jack128 (2003-04-27 22:53:00) [1]поторопился :-() . Продолжние функции
(*to->blob_put_segment) (to->blob_handle, buffer, length);
/* free the memory allocated to the buffer */
free(buffer);
}