On 03/24/2016 11:10 AM, Adam Jackson wrote: > We're about to update the generator scripts to use these, easier not to > vary between client and server. > > Signed-off-by: Adam Jackson <a...@redhat.com> > --- > src/mapi/glapi/gen/glX_proto_send.py | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/src/mapi/glapi/gen/glX_proto_send.py > b/src/mapi/glapi/gen/glX_proto_send.py > index 2b33030..8b3d8d7 100644 > --- a/src/mapi/glapi/gen/glX_proto_send.py > +++ b/src/mapi/glapi/gen/glX_proto_send.py > @@ -174,6 +174,7 @@ class > PrintGlxProtoStubs(glX_proto_common.glx_print_proto): > print '#include <X11/Xlib-xcb.h>' > print '#include <xcb/xcb.h>' > print '#include <xcb/glx.h>' > + print '#include <limits.h>' > > print '' > print '#define __GLX_PAD(n) (((n) + 3) & ~3)' > @@ -181,6 +182,29 @@ class > PrintGlxProtoStubs(glX_proto_common.glx_print_proto): > self.printFastcall() > self.printNoinline() > print '' > + > + print 'static _X_INLINE int safe_add(int a, int b)' > + print '{' > + print ' if (a < 0 || b < 0) return -1;' > + print ' if (INT_MAX - a < b) return -1;' > + print ' return a + b;' > + print '}' > + print 'static _X_INLINE int safe_mul(int a, int b)' > + print '{' > + print ' if (a < 0 || b < 0) return -1;' > + print ' if (a == 0 || b == 0) return 0;'
Is this check actually necessary? > + print ' if (a > INT_MAX / b) return -1;' > + print ' return a * b;' > + print '}' > + print 'static _X_INLINE int safe_pad(int a)' > + print '{' > + print ' int ret;' > + print ' if (a < 0) return -1;' > + print ' if ((ret = safe_add(a, 3)) < 0) return -1;' > + print ' return ret & (GLuint)~3;' > + print '}' > + print '' > + > print '#ifndef __GNUC__' > print '# define __builtin_expect(x, y) x' > print '#endif' > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev