Perhaps a bug: SDL_RenderReadPixels only read window pixels

Hi, everyone,
I just found out that SDL_RenderReadPixels only read pixels of the window. If I set the render target to another texture and then call RenderReadPixels, it still gives me the pixels of the window.
Here is the test code. If everything works, it should output (100, 100) every second. But it outputs (200, 200) every second which is the pixel color of the window.
It is surely not a double-buffer issue because of the while loop.

Code:

#include <SDL.h>
#include <stdio.h>
#include <memory.h>
int main(int argc, char * argv[]) {
SDL_Window * window = NULL;
SDL_Renderer * renderer = NULL;
if (SDL_Init(SDL_INIT_VIDEO) < 0) return 1;
window = SDL_CreateWindow(“test”, SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN | SDL_RENDERER_PRESENTVSYNC);
renderer = SDL_CreateRenderer(window, -1, 0);
SDL_Event ev;
SDL_Texture * tex = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, 100, 100);
unsigned char * mem = new unsigned char [1001004];
unsigned char color1=100, color2=200;
memset(mem, 0, 1001004);
while (true){
while (SDL_PollEvent(&ev)) if (ev.type == SDL_QUIT) return 0;
printf("(%d, “, mem[20]);
if (0 != SDL_SetRenderTarget(renderer, NULL)) return 1;
if (0 != SDL_SetRenderDrawColor(renderer, color2, color2, color2, color2)) return 1;
if (0 != SDL_RenderClear(renderer)) return 1;
if (0 != SDL_SetRenderTarget(renderer, tex)) return 1;
if (0 != SDL_SetRenderDrawColor(renderer, color1, color1, color1, color1)) return 1;
if (0 != SDL_RenderClear(renderer)) return 1;
memset(mem, 0, 1001004);
if (0 != SDL_RenderReadPixels(renderer, NULL, 0, mem, 100*4)) return 1;
printf(”%d)\n", mem[20]);
SDL_RenderPresent(renderer);
SDL_Delay(1000);
}
//… omit delete and SDL_DestroyXXX
return 0;
}

The version is SDL2 v2.0.1. in win7, and video drivers are install correctly.
Correct me if I used SDL_RenderReadPixels in a wrong way. Thanks.