Problems with cudaMemcpyToSymbol It writes to __constant__ only once

Hello!

I have such code:

[codebox]

device constant char g_constDevFiles[ PREDEFINED_BUFFER_SIZE * FILES_NUM ];

device constant uint_t g_constDevFilesOffsets[ FILES_NUM ];

func()

{

[indent]for( uint_t i = 0; i < uiStartsCount; i++ )

{

uiFilesToCheck = ( uiFilesCount >= 30 ? 30 : uiFilesCount );

uiFilesCount -= uiFilesToCheck;

const char*	  pNextFilesPortion	  = (pcFilesBuffers + i * FILES_NUM * PREDEFINED_BUFFER_SIZE);

const uint_t* pNextOffsetsPortion = (puiFilesOffsets + i * FILES_NUM * sizeof( uint_t ));

cuError = cudaMemcpyToSymbol( g_constDevFiles,		pNextFilesPortion,	 PREDEFINED_BUFFER_SIZE * uiFilesToCheck, 0, cudaMemcpyHostToDevice );

cuError = cudaMemcpyToSymbol( g_constDevFilesOffsets, pNextOffsetsPortion, sizeof( uint_t )		* uiFilesToCheck, 0, cudaMemcpyHostToDevice );

kernel1<<< X, Y >>>( ... )

}[/indent]

}[/codebox]

The problem is that cudaMemcpyToSymbol copies right data to constant variables ( g_constDevFiles and g_constDevFilesOffsets ) only on first pass of “for”. On second and further passes it copies something strange. What I doing wrong?