*/
ssize_t _gnutls_io_write_buffered2( GNUTLS_STATE state, const void *iptr, size_t n, const void* iptr2, size_t n2)
{
-opaque* sptr;
-ssize_t ret;
- sptr = gnutls_malloc( n+n2);
- if (sptr==NULL) {
- gnutls_assert();
- return GNUTLS_E_MEMORY_ERROR;
- }
+ if (n==0) {
+ return _gnutls_io_write_buffered( state, iptr2, n2);
+ } else {
+ opaque* sptr;
+ ssize_t ret;
+
+ sptr = gnutls_malloc( n+n2);
+ if (sptr==NULL) {
+ gnutls_assert();
+ return GNUTLS_E_MEMORY_ERROR;
+ }
- memcpy( sptr, iptr, n);
- memcpy( &sptr[n], iptr2, n2);
+ memcpy( sptr, iptr, n);
+ memcpy( &sptr[n], iptr2, n2);
- ret = _gnutls_io_write_buffered( state, sptr, n+n2);
- gnutls_free( sptr);
+ ret = _gnutls_io_write_buffered( state, sptr, n+n2);
+ gnutls_free( sptr);
- return ret;
+ return ret;
+ }
}