This file is indexed.

/usr/include/CGAL/Win32_exception.h is in libcgal-dev 4.7-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Copyright (c) 2007-08  INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
// You can redistribute it and/or modify it under the terms of the GNU
// General Public License as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$ 
// $Id$
//
// Author(s) : Laurent Saboret

#ifndef CGAL_WIN32_EXCEPTION_H
#define CGAL_WIN32_EXCEPTION_H

#ifdef _MSC_VER

#include <exception>

#include <windows.h>
#include <eh.h>
#include <iostream>

namespace CGAL {

// C++ class wrapping a Win32 structured exception.
class Win32_exception
{
// Data
private:
    unsigned int m_seNumber;
    
// Public operations
public:
    Win32_exception(unsigned int structuredExceptionNumber) 
    : m_seNumber(structuredExceptionNumber) 
    {}
    
    unsigned int getStructuredExceptionNumber() const { return m_seNumber; }
};


/// \internal
/// Class Win32_exception_handler:
/// - Translate Win32 structured exceptions to C++ exceptions.
/// - Protect application against stack overflow using _resetstkoflw()
///   (see http://msdn.microsoft.com/en-us/library/89f73td2(VS.80).aspx).
///
/// Caution: requires /EHa compilation option.
class Win32_exception_handler
{
// Data
private:
    _se_translator_function m_previous_translator;
    
// Public operations
public:

  Win32_exception_handler()
  {
    // Protect application against next stack overflow
    if (needs_stack_reset(false))
    {
      std::cerr << "Win32_exception_handler: reset stack using _resetstkoflw()\n";
      if(!_resetstkoflw()) 
      {
        std::cerr << "Win32_exception_handler: _resetstkoflw() failed, exiting!\n";
        abort(); 
      }
    }

    // Set up a function to handle win32 exceptions,
    // including stack overflow exceptions.
    m_previous_translator = _set_se_translator(translate);
  }

  ~Win32_exception_handler()
  {
    // Do not call _resetstkoflw() in this function!

    // Restore previous win32 exceptions handler
    _set_se_translator(m_previous_translator);
  }
    
// Private operations
private:

  // Translate Win32 structured exceptions to C++ exceptions
  static
  void __cdecl translate(unsigned int code, _EXCEPTION_POINTERS*)
  {
     // For stack overflow exceptions, set m_needs_stack_reset.
     // Use minimal stack space in this function.
     // Do not call _resetstkoflw() in this function!
     if (code == EXCEPTION_STACK_OVERFLOW)
     {
        std::cerr << "Win32_exception_handler: stack overflow!\n";
        needs_stack_reset(true);
     }

     // Throw our own C++  exception object
     throw Win32_exception(code);
  }

  // This method is a trick to allocate a global variable in a header file:
  // - get the previous value of m_needs_stack_reset
  // - set the new value of m_needs_stack_reset
  static
  bool needs_stack_reset(bool new_value)
  {
    // default value
    static bool m_needs_stack_reset = false;
    
    bool previous_value = m_needs_stack_reset;
    m_needs_stack_reset = new_value;
    return previous_value;
  }
};


} //namespace CGAL

#endif
#endif // CGAL_WIN32_EXCEPTION_H