x11vnc: fix compiler warnings.

pull/1/head
runge 16 years ago
parent 4fdb4cc67f
commit 91174efbb8

@ -1,5 +1,5 @@
x11vnc README file Date: Sat Jan 3 19:10:09 EST 2009 x11vnc README file Date: Sat Jan 3 23:43:28 EST 2009
The following information is taken from these URLs: The following information is taken from these URLs:

@ -1,6 +1,7 @@
/* -- avahi.c -- */ /* -- avahi.c -- */
#include "x11vnc.h" #include "x11vnc.h"
#include "connections.h"
void avahi_initialise(void); void avahi_initialise(void);
void avahi_advertise(const char *name, const char *host, const uint16_t port); void avahi_advertise(const char *name, const char *host, const uint16_t port);
@ -21,6 +22,8 @@ static int try_avahi_helper(const char *name, const char *host, const uint16_t p
char *cmd, *p, *path = getenv("PATH"), portstr[32]; char *cmd, *p, *path = getenv("PATH"), portstr[32];
int i; int i;
if (!name || !host || !port) {}
/* avahi-publish */ /* avahi-publish */
if (no_external_cmds || !cmd_ok("zeroconf")) { if (no_external_cmds || !cmd_ok("zeroconf")) {
return 0; return 0;

@ -15,6 +15,9 @@
#include "macosx.h" #include "macosx.h"
#include "macosxCG.h" #include "macosxCG.h"
#include "avahi.h" #include "avahi.h"
#include "screen.h"
#include "xrecord.h"
#include "xevents.h"
/* /*
* Exiting and error handling routines * Exiting and error handling routines
@ -270,6 +273,8 @@ static int Xerror(Display *d, XErrorEvent *error) {
return (*Xerror_def)(d, error); return (*Xerror_def)(d, error);
} }
void watch_loop(void);
static int XIOerr(Display *d) { static int XIOerr(Display *d) {
static int reopen = 0, rmax = 1; static int reopen = 0, rmax = 1;
X_UNLOCK; X_UNLOCK;

@ -2833,6 +2833,7 @@ static void turn_off_truecolor_ad(rfbClientPtr client) {
*/ */
rfbBool password_check_chat_helper(rfbClientPtr cl, const char* response, int len) { rfbBool password_check_chat_helper(rfbClientPtr cl, const char* response, int len) {
if (response || len) {}
if (cl != chat_window_client) { if (cl != chat_window_client) {
rfbLog("invalid client during chat_helper login\n"); rfbLog("invalid client during chat_helper login\n");
return FALSE; return FALSE;
@ -2851,12 +2852,14 @@ rfbBool password_check_chat_helper(rfbClientPtr cl, const char* response, int le
} }
enum rfbNewClientAction new_client_chat_helper(rfbClientPtr client) { enum rfbNewClientAction new_client_chat_helper(rfbClientPtr client) {
if (client) {}
client->clientGoneHook = client_gone_chat_helper; client->clientGoneHook = client_gone_chat_helper;
rfbLog("new chat helper\n"); rfbLog("new chat helper\n");
return(RFB_CLIENT_ACCEPT); return(RFB_CLIENT_ACCEPT);
} }
void client_gone_chat_helper(rfbClientPtr client) { void client_gone_chat_helper(rfbClientPtr client) {
if (client) {}
rfbLog("finished chat helper\n"); rfbLog("finished chat helper\n");
chat_window_client = NULL; chat_window_client = NULL;
} }

@ -37,5 +37,6 @@ extern void check_new_clients(void);
extern int accept_client(rfbClientPtr client); extern int accept_client(rfbClientPtr client);
extern int run_user_command(char *cmd, rfbClientPtr client, char *mode, char *input, extern int run_user_command(char *cmd, rfbClientPtr client, char *mode, char *input,
int len, FILE *output); int len, FILE *output);
extern int check_access(char *addr);
#endif /* _X11VNC_CONNECTIONS_H */ #endif /* _X11VNC_CONNECTIONS_H */

@ -13,8 +13,8 @@
* *
* compile via: * compile via:
cc -O -o ultravnc_dsm_helper ultravnc_dsm_helper.c -lssl -lcrypto cc -O -o ultravnc_dsm_helper ultravnc_dsm_helper.c -lcrypto
cc -DDBG -O -o ultravnc_dsm_helper ultravnc_dsm_helper.c -lssl -lcrypto cc -DDBG -O -o ultravnc_dsm_helper ultravnc_dsm_helper.c -lcrypto
* *
* See usage below for how to run it. * See usage below for how to run it.
@ -369,7 +369,7 @@ extern void enc_do(char *ciph, char *keyfile, char *lport, char *rhp) {
int i; int i;
len = 0; len = 0;
pw_in = 1; pw_in = 1;
for (i=0; i < strlen(keyfile); i++) { for (i=0; i < (int) strlen(keyfile); i++) {
/* load the string to keydata: */ /* load the string to keydata: */
int n = i + strlen("pw="); int n = i + strlen("pw=");
keydata[i] = keyfile[n]; keydata[i] = keyfile[n];
@ -462,7 +462,7 @@ static void enc_xfer(int sock_fr, int sock_to, int encrypt) {
unsigned char salt[SALT+1]; unsigned char salt[SALT+1];
unsigned char ivec[EVP_MAX_IV_LENGTH]; unsigned char ivec[EVP_MAX_IV_LENGTH];
int i, cnt, len, m, n = 0, vb = 0, pa = 1, first = 1; int i, cnt, len, m, n = 0, vb = 0, first = 1;
int whoops = 1; /* for the msrc4 problem */ int whoops = 1; /* for the msrc4 problem */
char *encstr, *encsym; char *encstr, *encsym;
@ -788,7 +788,7 @@ static void enc_xfer(int sock_fr, int sock_to, int encrypt) {
* decrypter. * decrypter.
*/ */
static void enc_connections(int listen_port, char *connect_host, int connect_port) { static void enc_connections(int listen_port, char *connect_host, int connect_port) {
int listen_fd, conn1, conn2, ret, n, one = 1; int listen_fd, conn1, conn2, ret, one = 1;
socklen_t clen; socklen_t clen;
struct hostent *hp; struct hostent *hp;
struct sockaddr_in client, server; struct sockaddr_in client, server;

@ -674,7 +674,7 @@ void do_gui(char *opts, int sleep) {
char *cmd, *p, *p2, *p1, *p0 = getenv("PATH"); char *cmd, *p, *p2, *p1, *p0 = getenv("PATH");
char tf1[] = "/tmp/x11vnc_port_prompt.2XXXXXX"; char tf1[] = "/tmp/x11vnc_port_prompt.2XXXXXX";
char tf2[] = "/tmp/x11vnc_port_prompt.1XXXXXX"; char tf2[] = "/tmp/x11vnc_port_prompt.1XXXXXX";
int fd, i, port; int fd;
char *dstr = "", *wish = NULL; char *dstr = "", *wish = NULL;
char line[128]; char line[128];
FILE *fp; FILE *fp;
@ -831,7 +831,6 @@ void do_gui(char *opts, int sleep) {
if (icon_mode) { if (icon_mode) {
char tf[] = "/tmp/x11vnc.tray.XXXXXX"; char tf[] = "/tmp/x11vnc.tray.XXXXXX";
int fd; int fd;
struct stat sbuf;
fd = mkstemp(tf); fd = mkstemp(tf);
if (fd < 0) { if (fd < 0) {

@ -341,7 +341,7 @@ static int shm_create(XShmSegmentInfo *shm, XImage **ximg_ptr, int w, int h,
void shm_delete(XShmSegmentInfo *shm) { void shm_delete(XShmSegmentInfo *shm) {
#if LIBVNCSERVER_HAVE_XSHM #if LIBVNCSERVER_HAVE_XSHM
if (getenv("X11VNC_SHM_DEBUG")) fprintf(stderr, "shm_delete: 0x%x\n", shm); if (getenv("X11VNC_SHM_DEBUG")) fprintf(stderr, "shm_delete: %p\n", (void *) shm);
if (shm != NULL && shm->shmaddr != (char *) -1) { if (shm != NULL && shm->shmaddr != (char *) -1) {
shmdt(shm->shmaddr); shmdt(shm->shmaddr);
} }

@ -27,6 +27,8 @@
#include "solid.h" #include "solid.h"
#include "inet.h" #include "inet.h"
#include "xrandr.h" #include "xrandr.h"
#include "xrecord.h"
#include "pm.h"
#include <rfb/rfbclient.h> #include <rfb/rfbclient.h>
@ -55,8 +57,6 @@ rfbBool vnc_reflect_send_pointer(int x, int y, int mask);
rfbBool vnc_reflect_send_key(uint32_t key, rfbBool down); rfbBool vnc_reflect_send_key(uint32_t key, rfbBool down);
rfbBool vnc_reflect_send_cuttext(char *str, int len); rfbBool vnc_reflect_send_cuttext(char *str, int len);
void watch_loop(void);
static void debug_colormap(XImage *fb); static void debug_colormap(XImage *fb);
static void set_visual(char *str); static void set_visual(char *str);
static void nofb_hook(rfbClientPtr cl); static void nofb_hook(rfbClientPtr cl);

@ -924,7 +924,9 @@ static void solid_macosx(int restore) {
if (restore) { if (restore) {
rfbLog("restore pid: %d\n", (int) solid_macosx_pid); rfbLog("restore pid: %d\n", (int) solid_macosx_pid);
if (solid_macosx_pid > 0) { if (solid_macosx_pid > 0) {
#if 0
int i, status; int i, status;
#endif
rfbLog("kill -TERM macosx_solid_background helper pid: %d\n", (int) solid_macosx_pid); rfbLog("kill -TERM macosx_solid_background helper pid: %d\n", (int) solid_macosx_pid);
kill(solid_macosx_pid, SIGTERM); kill(solid_macosx_pid, SIGTERM);
#if 0 #if 0

@ -1629,6 +1629,9 @@ static int check_ssl_access(char *addr) {
static int write_exact(int sock, char *buf, int len); static int write_exact(int sock, char *buf, int len);
static int read_exact(int sock, char *buf, int len); static int read_exact(int sock, char *buf, int len);
/* XXX not in rfb.h: */
void rfbClientSendString(rfbClientPtr cl, char *reason);
static int finish_auth(rfbClientPtr client, char *type) { static int finish_auth(rfbClientPtr client, char *type) {
int security_result, ret; int security_result, ret;
@ -1859,10 +1862,10 @@ void accept_openssl(int mode, int presock) {
* here, since we use INADDR_LOOPBACK). * here, since we use INADDR_LOOPBACK).
*/ */
rb = (unsigned char *) calloc(6, 1); rb = (unsigned char *) calloc(6, 1);
RAND_bytes((char *)rb, 6); RAND_bytes(rb, 6);
sprintf(cookie, "RB=%d%d%d%d%d%d/%f%f/0x%x", sprintf(cookie, "RB=%d%d%d%d%d%d/%f%f/%p",
rb[0], rb[1], rb[2], rb[3], rb[4], rb[5], rb[0], rb[1], rb[2], rb[3], rb[4], rb[5],
dnow() - x11vnc_start, x11vnc_start, rb); dnow() - x11vnc_start, x11vnc_start, (void *)rb);
if (mode != OPENSSL_INETD) { if (mode != OPENSSL_INETD) {
name = get_remote_host(sock); name = get_remote_host(sock);
@ -2780,6 +2783,7 @@ static int switch_to_anon_dh(void) {
static int anontls_dialog(int s_in, int s_out) { static int anontls_dialog(int s_in, int s_out) {
if (s_in || s_out) {}
anontls_selected = 1; anontls_selected = 1;
if (!switch_to_anon_dh()) { if (!switch_to_anon_dh()) {
@ -2798,7 +2802,7 @@ static int anontls_dialog(int s_in, int s_out) {
static int vencrypt_dialog(int s_in, int s_out) { static int vencrypt_dialog(int s_in, int s_out) {
char buf[256], buf2[256]; char buf[256], buf2[256];
int subtypes[16]; int subtypes[16];
int n, i, ival, ok, db = 1, nsubtypes = 0; int n, i, ival, ok, nsubtypes = 0;
vencrypt_selected = 0; vencrypt_selected = 0;
@ -2829,7 +2833,7 @@ static int vencrypt_dialog(int s_in, int s_out) {
/* accept only 0.2 */ /* accept only 0.2 */
if (buf[0] != 0 || buf[1] != 2) { if (buf[0] != 0 || buf[1] != 2) {
rfbLog("vencrypt: unsupported VeNCrypt version, closing connection.\n"); rfbLog("vencrypt: unsupported VeNCrypt version, closing connection.\n");
buf[0] = 255; buf[0] = (char) 255;
write_exact(s_out, buf, 1); write_exact(s_out, buf, 1);
close(s_in); close(s_out); close(s_in); close(s_out);
return 0; return 0;
@ -2965,12 +2969,12 @@ static int check_vnc_tls_mode(int s_in, int s_out) {
return 1; return 1;
} }
if (ssl_client_mode) { if (ssl_client_mode) {
/* XXX check if this can be done in SSL client mode. */
if (vencrypt_mode == VENCRYPT_FORCE || anontls_mode == ANONTLS_FORCE) { if (vencrypt_mode == VENCRYPT_FORCE || anontls_mode == ANONTLS_FORCE) {
rfbLog("check_vnc_tls_mode: VENCRYPT_FORCE/ANONTLS_FORCE in client\n"); rfbLog("check_vnc_tls_mode: VENCRYPT_FORCE/ANONTLS_FORCE in client\n");
rfbLog("check_vnc_tls_mode: connect mode prevents normal SSL.\n"); rfbLog("check_vnc_tls_mode: connect mode.\n");
//return 0; /* this is OK, continue on below for dialog. */
} else { } else {
/* otherwise we must assume normal SSL (we send client hello) */
return 1; return 1;
} }
} }
@ -3104,6 +3108,8 @@ static void pr_ssl_info(int verb) {
SSL_SESSION *s; SSL_SESSION *s;
char *proto = "unknown"; char *proto = "unknown";
if (verb) {}
if (ssl == NULL) { if (ssl == NULL) {
return; return;
} }
@ -3131,7 +3137,7 @@ static void pr_ssl_info(int verb) {
static void ssl_timeout (int sig) { static void ssl_timeout (int sig) {
int i; int i;
rfbLog("sig: %d, ssl_init[%d] timed out.\n", sig, getpid()); rfbLog("sig: %d, ssl_init[%d] timed out.\n", sig, getpid());
for (i=0; i < 256; i) { for (i=0; i < 256; i++) {
close(i); close(i);
} }
exit(1); exit(1);
@ -3139,7 +3145,7 @@ static void ssl_timeout (int sig) {
static int ssl_init(int s_in, int s_out, int skip_vnc_tls) { static int ssl_init(int s_in, int s_out, int skip_vnc_tls) {
unsigned char *sid = (unsigned char *) "x11vnc SID"; unsigned char *sid = (unsigned char *) "x11vnc SID";
char *name; char *name = NULL;
int peerport = 0; int peerport = 0;
int db = 0, rc, err; int db = 0, rc, err;
int ssock = s_in; int ssock = s_in;
@ -3159,7 +3165,7 @@ static int ssl_init(int s_in, int s_out, int skip_vnc_tls) {
if (skip_vnc_tls) { if (skip_vnc_tls) {
rfbLog("SSL: ssl_helper[%d]: HTTPS mode, skipping check_vnc_tls_mode()\n", rfbLog("SSL: ssl_helper[%d]: HTTPS mode, skipping check_vnc_tls_mode()\n",
getpid(), name, peerport); getpid());
} else if (!check_vnc_tls_mode(s_in, s_out)) { } else if (!check_vnc_tls_mode(s_in, s_out)) {
return 0; return 0;
} }
@ -3343,7 +3349,7 @@ static int ssl_init(int s_in, int s_out, int skip_vnc_tls) {
return 1; return 1;
} }
static symmetric_encryption_xfer(int csock, int s_in, int s_out); static void symmetric_encryption_xfer(int csock, int s_in, int s_out);
static void ssl_xfer(int csock, int s_in, int s_out, int is_https) { static void ssl_xfer(int csock, int s_in, int s_out, int is_https) {
int dbxfer = 0, db = 0, check_pending, fdmax, nfd, n, i, err; int dbxfer = 0, db = 0, check_pending, fdmax, nfd, n, i, err;
@ -3951,9 +3957,10 @@ if (db) rfbLog("raw_xfer bad write: %d -> %d | %d/%d errno=%d\n", csock, s_out
#endif #endif
#include "enc.h" #include "enc.h"
static symmetric_encryption_xfer(int csock, int s_in, int s_out) { static void symmetric_encryption_xfer(int csock, int s_in, int s_out) {
char tmp[100]; char tmp[100];
char *cipher, *keyfile, *q; char *cipher, *keyfile, *q;
if (! enc_str) { if (! enc_str) {
return; return;
} }
@ -3971,6 +3978,8 @@ static symmetric_encryption_xfer(int csock, int s_in, int s_out) {
/* TBD: s_in != s_out */ /* TBD: s_in != s_out */
if (s_out) {}
sprintf(tmp, "fd=%d,%d", s_in, csock); sprintf(tmp, "fd=%d,%d", s_in, csock);
enc_do(cipher, keyfile, "-1", tmp); enc_do(cipher, keyfile, "-1", tmp);

@ -148,6 +148,7 @@
/* /*
* main routine for the x11vnc program * main routine for the x11vnc program
*/ */
void watch_loop(void);
static int limit_shm(void); static int limit_shm(void);
static void check_rcfile(int argc, char **argv); static void check_rcfile(int argc, char **argv);
@ -284,7 +285,7 @@ void terminal_services(char *list) {
PropModeReplace, (unsigned char *)list, strlen(list)); PropModeReplace, (unsigned char *)list, strlen(list));
XSync(dpy, False); XSync(dpy, False);
} }
if (db) fprintf(stderr, "TS_REDIR_LIST Atom: %d.\n"); if (db) fprintf(stderr, "TS_REDIR_LIST Atom: %d.\n", (int) at);
oh_restart_it_all: oh_restart_it_all:
@ -512,7 +513,7 @@ if (tstk[j] != 0) fprintf(stderr, "B redir[%d][%d] = %d %s\n", i, j, tstk[j], t
} }
} }
if (did_ts && rate_count > 100) { if (did_ts && rate_count > 100) {
int k, db_netstat = 1; int db_netstat = 1;
char dcmd[100]; char dcmd[100];
if (no_external_cmds) { if (no_external_cmds) {
@ -639,7 +640,7 @@ void do_tsd(void) {
if (a != None) { if (a != None) {
get_prop(prop, 512, a); get_prop(prop, 512, a);
} }
if (db) fprintf(stderr, "TS_REDIR_LIST Atom: %d = '%s'\n", a, prop); if (db) fprintf(stderr, "TS_REDIR_LIST Atom: %d = '%s'\n", (int) a, prop);
if (prop[0] == '\0') { if (prop[0] == '\0') {
return; return;
@ -772,7 +773,7 @@ static void check_redir_services(void) {
pid = (pid_t) atoi(prop); pid = (pid_t) atoi(prop);
} }
} }
if (db) fprintf(stderr, "TS_REDIR_PID Atom: %d = '%s'\n", a, prop); if (db) fprintf(stderr, "TS_REDIR_PID Atom: %d = '%s'\n", (int) a, prop);
if (getenv("FD_TAG")) { if (getenv("FD_TAG")) {
a = XInternAtom(dpy, "FD_TAG", False); a = XInternAtom(dpy, "FD_TAG", False);
@ -783,7 +784,7 @@ static void check_redir_services(void) {
PropModeReplace, (unsigned char *)tag, strlen(tag)); PropModeReplace, (unsigned char *)tag, strlen(tag));
XSync(dpy, False); XSync(dpy, False);
} }
if (db) fprintf(stderr, "FD_TAG Atom: %d = '%s'\n", a, prop); if (db) fprintf(stderr, "FD_TAG Atom: %d = '%s'\n", (int) a, prop);
} }
prop[0] = '\0'; prop[0] = '\0';
@ -791,7 +792,7 @@ static void check_redir_services(void) {
if (a != None) { if (a != None) {
get_prop(prop, 512, a); get_prop(prop, 512, a);
} }
if (db) fprintf(stderr, "TS_REDIR Atom: %d = '%s'\n", a, prop); if (db) fprintf(stderr, "TS_REDIR Atom: %d = '%s'\n", (int) a, prop);
if (prop[0] == '\0') { if (prop[0] == '\0') {
rfbLog("TS_REDIR is empty, restarting...\n"); rfbLog("TS_REDIR is empty, restarting...\n");
restart = 1; restart = 1;
@ -2264,7 +2265,6 @@ int main(int argc, char* argv[]) {
continue; continue;
} }
if (!strcmp(arg, "-sleepin")) { if (!strcmp(arg, "-sleepin")) {
int n;
CHECK_ARGC CHECK_ARGC
do_sleepin(argv[++i]); do_sleepin(argv[++i]);
continue; continue;
@ -2557,7 +2557,6 @@ int main(int argc, char* argv[]) {
continue; continue;
} }
if (!strcmp(arg, "-enc")) { if (!strcmp(arg, "-enc")) {
char *q;
use_openssl = 1; use_openssl = 1;
CHECK_ARGC CHECK_ARGC
enc_str = strdup(argv[++i]); enc_str = strdup(argv[++i]);

@ -189,7 +189,7 @@ Status XShmAttach_wr(Display *disp, XShmSegmentInfo *shminfo) {
Status XShmDetach_wr(Display *disp, XShmSegmentInfo *shminfo) { Status XShmDetach_wr(Display *disp, XShmSegmentInfo *shminfo) {
#if LIBVNCSERVER_HAVE_XSHM #if LIBVNCSERVER_HAVE_XSHM
if (getenv("X11VNC_SHM_DEBUG")) fprintf(stderr, "XShmDetach_wr: 0x%x disp: 0x%x\n", shminfo, disp); if (getenv("X11VNC_SHM_DEBUG")) fprintf(stderr, "XShmDetach_wr: %p disp: %p\n", (void *)shminfo, (void *)disp);
return XShmDetach(disp, shminfo); return XShmDetach(disp, shminfo);
#else #else
if (!disp || !shminfo) {} if (!disp || !shminfo) {}
@ -386,6 +386,8 @@ static void copy_raw_fb_low_bpp(XImage *dest, int x, int y, unsigned int w,
static int last_bpp = -1; static int last_bpp = -1;
static int cga = -1; static int cga = -1;
if (rm_f | gm_f | bm_f) {}
if (cga < 0) { if (cga < 0) {
if (getenv("RAWFB_CGA")) { if (getenv("RAWFB_CGA")) {
cga = 1; cga = 1;
@ -412,7 +414,7 @@ static void copy_raw_fb_low_bpp(XImage *dest, int x, int y, unsigned int w,
for (br = 0; br < 8; br++) { for (br = 0; br < 8; br++) {
unsigned int pbit, k, m = 0; unsigned int pbit, k, m = 0;
for (k=0; k < raw_fb_native_bpp; k++) { for (k=0; k < (unsigned int) raw_fb_native_bpp; k++) {
pbit = 1 << (br+k); pbit = 1 << (br+k);
m |= pbit; m |= pbit;
} }
@ -427,8 +429,6 @@ if (0) fprintf(stderr, "x=%d y=%d w=%d h=%d bpl=%d d_bpl=%d-%dx%dx%d/%d %p\n",
for (line = 0; line < h; line++) { for (line = 0; line < h; line++) {
//fprintf(stderr, "w=%d h=%d x=%d y+line=%d\n", w, h, x, y+line);
if (! raw_fb_seek) { if (! raw_fb_seek) {
/* mmap */ /* mmap */
src = raw_fb_addr + raw_fb_offset + bpl*(y+line); src = raw_fb_addr + raw_fb_offset + bpl*(y+line);
@ -456,14 +456,12 @@ if (0) fprintf(stderr, "x=%d y=%d w=%d h=%d bpl=%d d_bpl=%d-%dx%dx%d/%d %p\n",
} }
} }
} }
for (ix = 0; ix < w; ix++) { for (ix = 0; ix < (int) w; ix++) {
int bx = (x + ix) * raw_fb_native_bpp; int bx = (x + ix) * raw_fb_native_bpp;
int ib = bx / 8; int ib = bx / 8;
int br = bx - ib * 8; int br = bx - ib * 8;
unsigned char val; unsigned char val;
//fprintf(stderr, "%d\n", ix);
val = *((unsigned char*) (buf + ib)); val = *((unsigned char*) (buf + ib));
val = msk[br] & val; val = msk[br] & val;
@ -504,8 +502,6 @@ if (0) fprintf(stderr, "x=%d y=%d w=%d h=%d bpl=%d d_bpl=%d-%dx%dx%d/%d %p\n",
*(dst+ix) = (char) val; *(dst+ix) = (char) val;
} }
//fprintf(stderr, "\n", ix);
dst += dest->bytes_per_line; dst += dest->bytes_per_line;
} }
} }

Loading…
Cancel
Save